SELECT *
FROM table1,
table2,
table3
ORDER BY id ASC
LIMIT
怎么做对吗?我正在使用MySQL,所有表都具有相同的结构。
答案 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
最好指定所需的列,而不是使用*来减少所需的内存。