SELECT *
FROM table1,
table2,
table3
ORDER BY id ASC
LIMIT
如何做到这一点?我使用的是MySQL,所有的表都有相同的结构。从多个表中选择SQL具有相同结构
SELECT *
FROM table1,
table2,
table3
ORDER BY id ASC
LIMIT
如何做到这一点?我使用的是MySQL,所有的表都有相同的结构。从多个表中选择SQL具有相同结构
SELECT *
FROM table1
UNION
SELECT *
FROM table2
UNION
SELECT *
FROM table3
ORDER BY id ASC
您最好指定您需要的列,而不是使用*来减少所需的内存。
我可以这样做:“SELECT COUNT('id')FROM'table1' UNION SELECT COUNT('id')FROM'table2' UNION SELECT COUNT('id')FROM'table3' UNION SELECT COUNT('id')FROM 'table4' UNION SELECT COUNT('id')FROM'table5'“? –
是的,你应该可以做到这一点。这可能会耗费您的桌子的大小。你还会得到5个单独的行,不是一个总和。 –
您可能还想列出您的专栏名称:count(id)as total –
你可以像下面这样做
SELECT * FROM (
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
UNION ALL
SELECT * FROM table3
) as l
ORDER BY id ASC LIMIT 50
当你在每个表列数相同的联盟将只工作
您是否尝试过?它显示错误消息:错误代码:1248.每个派生表必须有自己的别名\t 0.015秒 –
感谢它已被修复 –
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
到您需要的号码。UNION
运算符默认情况下只选择不同的值。要允许重复值,请使用UNION ALL
。我认为他正在寻找'UNION' –
可能但不清楚。他试图写的“查询”,对我来说,他似乎希望根据他们的“id”从三张表中找出记录。 – SajjadHashmi
@SajjadHashmi根据您的回答,查询将只显示table1.id = table2.id和table2.id = table3.id中匹配的行。意味着它只会显示匹配的记录。但问题是不同的。所以我不同意你的回答。 –
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);
你期望的输出?你试图做什么? – Kacer
您可能正在寻找UNION语句:http://dev.mysql.com/doc/refman/5.0/en/union.html – arkascha
什么是db模式? – Damodaran