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