debugsqlMinor
Why "select" works in MariaDB but doesn't work in MySQL
Viewed 0 times
whybutworksdoesnmysqlworkselectmariadb
Problem
set @row_number = 0;
SELECT
*
FROM
(SELECT
(@row_number:=@row_number + 1) AS num,
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
videos.itsOK,
viewed
FROM
tbl_videos videos
WHERE
videos.tbl_user_id = 23
AND videos.tbl_category_id = 265
ORDER BY videos.create_date DESC
) AS paginateTbl
WHERE
paginateTbl.num > 0
&& paginateTbl.num <= 9mysql results:
mariadb results:
Inner query work on both of them but main query work only in mariadb! What's the matter in mysql not working?
Versions used are mysql:
5.5.44-0ubuntu0.14.04.1 and mariadb 10.0.13-MariaDB-log.The
CREATE TABLE statements are identical (except for the AUTO_INCREMENT, number of rows): MySQL result:
``
SHOW CREATE TABLE tbl_videos;
CREATE TABLE tbl_videos (
id INT (20) NOT NULL AUTO_INCREMENT
,title VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,description TEXT COLLATE utf8_persian_ci NOT NULL
,tags TEXT COLLATE utf8_persian_ci NOT NULL
,video_quality VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,dl_link1 VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,dl_link2 VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,dl_link3 VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,viewed INT (11) NOT NULL
,viewed_duration VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,viewed_traffic VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,embed_code VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,sharing_code VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,replace_times INT (11) NOT NULL
,actual_link TEXT COLLATE utf8_persian_ci NOT NULL
,tbl_user_id INT (11) NOT NULL
,tbl_category_id INT (11) NOT NULL
,tbl_player_id INT (11) NOT NULL
,itsOK TINYINT (2) NOT NULL
,length INT (20) NOT NULL
,create_Solution
It's MySQL 5.5 bug which reported to MySQL. so I installed mysql 5.6 and main query works well. same query with @@version in results.
mysql 5.5 & mysql 5.6 main query results:
Now I check a special id eg: 1103 in tbl_videos and both select works well.
mysql 5.5 & mysql 5.6 results:
set @row_number = 0;
SELECT
*, @@version mysql_version
FROM
(SELECT
(@row_number:=@row_number + 1) AS num,
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
videos.itsOK,
viewed
FROM
tbl_videos videos
WHERE
videos.tbl_user_id = 9
AND videos.tbl_category_id = 113
AND length > 0
ORDER BY videos.create_date ASC
) AS paginateTbl
WHERE
paginateTbl.num > 0
&& paginateTbl.num <= 9mysql 5.5 & mysql 5.6 main query results:
Now I check a special id eg: 1103 in tbl_videos and both select works well.
SELECT
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
itsOK,
viewed,
@@version mysql_version
FROM
tbl_videos
WHERE
id = 1103mysql 5.5 & mysql 5.6 results:
Code Snippets
set @row_number = 0;
SELECT
*, @@version mysql_version
FROM
(SELECT
(@row_number:=@row_number + 1) AS num,
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
videos.itsOK,
viewed
FROM
tbl_videos videos
WHERE
videos.tbl_user_id = 9
AND videos.tbl_category_id = 113
AND length > 0
ORDER BY videos.create_date ASC
) AS paginateTbl
WHERE
paginateTbl.num > 0
&& paginateTbl.num <= 9SELECT
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
itsOK,
viewed,
@@version mysql_version
FROM
tbl_videos
WHERE
id = 1103Context
StackExchange Database Administrators Q#114256, answer score: 4
Revisions (0)
No revisions yet.