从具有相同结构的多个表中选择SQL

时间:2013-11-21 06:01:40

标签: mysql sql

SELECT  * 
FROM table1, 
     table2, 
     table3 
ORDER BY id ASC 
      LIMIT

怎么做对吗?我正在使用MySQL,所有表都具有相同的结构。

4 个答案:

答案 0 :(得分:8)

你可以这样做

SELECT * FROM (
                SELECT  * FROM table1
                UNION ALL
                SELECT  * FROM table2
                UNION ALL
                SELECT  * FROM table3   
) as l
ORDER BY id ASC LIMIT 50

UNION仅在每个表中具有相同数量的列时才起作用

答案 1 :(得分:1)

1 - 从语句相同结构开始,假设所有三个表都有一列id,我们在这些表中用作主外键。而且你需要从这三个中记录特定的id。

SELECT  * 
FROM table1 t1, 
     table2 t2, 
     table3 t3
WHERE t1.id=t2.id AND t2.id=t3.id 
-- ORDER BY id DESC
LIMIT 10;

这将为您提供与特定id相关的所有三个表中的前10个记录。

2 - 假设您只是将来自三个不同查询的结果合并到一个语句中,并按id

对它们进行优先排序
SELECT  * FROM table1
UNION
SELECT  * FROM table2
UNION
SELECT  * FROM table3
--ORDER BY id DESC
LIMIT 10;
  • 如果您需要上一次取消评论的记录-- ORDER BY id DESC ,假设您有一个递增的id
  • 如果您需要更多记录,而不仅仅是将LIMIT中的 10 更改为所需的号码。
  • 请注意: UNION运算符默认情况下仅选择不同的值。要允许重复值,请使用UNION ALL

答案 2 :(得分:1)

UNION用于将多个SELECT语句的结果合并为一个结果集

(SELECT u.name FROM user as u where u.active=1) UNION (SELECT pu.name FROM productuser as pu WHERE pu.active=1);

答案 3 :(得分:0)

SELECT  * 
FROM table1
UNION
SELECT  * 
FROM table2
UNION
SELECT  * 
FROM table3
ORDER BY id ASC 

最好指定所需的列,而不是使用*来减少所需的内存。