我遇到了一个奇怪的问题:
select * from (
select id from myTable1 limit 10
) t1
union
select * from (
select id from myTable2 limit 10
) t2
=> Return 20 rows
select * from (
select id from myTable1 limit 10 ORDER BY id
) t1
union
select * from (
select id from myTable2 limit 10
) t2
=> Return 10 rows
正如您所看到的,这两个查询之间的唯一区别是"顺序为"在第一个子查询中。
这是一个错误还是我错过了什么?
更多信息:
> SHOW VARIABLES LIKE "%version%";
innodb_version 5.6.16
protocol_version 10
slave_type_conversions
version 5.6.16
version_comment MySQL Community Server (GPL)
version_compile_machine x86_64
version_compile_os Win64
答案 0 :(得分:1)
这是由于一个简单的错误:
交换了ORDER BY
和LIMIT
:
(
select id from myTable1 ORDER BY id limit 10
)
union
(
select id from myTable2 limit 10
)
=> return 20 rows
正如评论中所建议的那样,最好使用UNION ALL
但我的2个数据集没有共同的数据。