如何在mysql中合并多个select

时间:2012-10-21 08:00:27

标签: mysql select join subquery

我有几张桌子,名字如下:

table_2012_12
table_2012_10
table_2012_07

两者具有相同的结构:

id
order_id
account_id

我知道我必须执行这些查询:

SELECT * FROM table_2012_12 where id=1
SELECT * FROM table_2012_12 where id=5  
SELECT * FROM table_2012_10 where id=1
SELECT * FROM table_2012_07 where id=22

使用单个查询的最佳(表演)方法是什么?

3 个答案:

答案 0 :(得分:1)

UNION运算符可以做到这一点。请参阅:http://dev.mysql.com/doc/refman/5.6/en/union.html

SELECT * FROM table_2012_12 where id=1
UNION ALL
SELECT * FROM table_2012_12 where id=5  
UNION ALL
SELECT * FROM table_2012_10 where id=1
UNION ALL
SELECT * FROM table_2012_07 where id=22

通常,您不应只写UNION而是UNION ALLUNION具有加入查询结果以及过滤掉任何重复行的效果。 UNION ALL将简单地合并查询结果,并保留所有行。这样效率更高

答案 1 :(得分:1)

鉴于此结构,您无法进行任何优化,但您可以进行union查询:

SELECT * FROM table_2012_12 where id=1
UNION SELECT * FROM table_2012_12 where id=5  
UNION SELECT * FROM table_2012_10 where id=1
UNION SELECT * FROM table_2012_07 where id=22

UNION会自动删除重复项。

答案 2 :(得分:1)

SELECT * FROM table_2012_12 where id=1 OR  id=5
UNION ALL SELECT * FROM table_2012_10 where id=1
UNION ALL SELECT * FROM table_2012_07 where id=22