2011-08-04 58 views
1

這可能是一件非常簡單的事情。如果是這樣,我表示歉意。我仍然在學習MySQL。從另一個表中按ID排序時從MySQL表中選擇

說,我有兩個表:

Table1: 
`id` int autoincrement primary key 
`Name` tinytext 
`Phone` tinytext 
`Date` etc. 

Table2: 
`id` int autoincrement primary key 
`itmID` int 

在表2中的每一行者特指在該元件應選擇出表1的順序。表2中的itmID字段鏈接到表1中的id字段。

所以就在此刻選擇從表1的元素我這樣做:

SELECT * FROM `Table1`; 

但是你如何根據表2,這樣的訂購它們?

SELECT * FROM `Table1` ORDER BY <itmID's in Table2> ASC; 

回答

4

如果Table1的所有ID對Table2條目使用INNER JOIN,像這樣。

SELECT * FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.id = t2.itmID 
ORDER BY t2.itmID 

如果不是所有的人都有一個條目,然後使用LEFT JOIN,像這樣:

SELECT * FROM Table1 t1 
LEFT JOIN Table2 t2 ON t1.id = t2.itmID 
ORDER BY t2.itmID 
+0

非常好的評論。謝謝! – ahmd0

4

從第一個表格中選擇,將其連接到第二個表格,然後按秒進行排序。喜歡的東西

SELECT * 
FROM table1 
LEFT JOIN table 2 on table.id = table2.id 
ORDER by table2.itmID 
+1

正確的想法,但我懷疑'id'是適當的連接列,如果它是兩個表中的自動增量。 –

+0

好點 - 以任何適當的數據連接。如果兩張桌子不能合併,你不能按這種方式排序。 – Ryan

3

瑞安的答案几乎是正確的

SELECT * 
FROM table1 
INNER JOIN table2 on table1.id = table2.itmID 
ORDER BY table2.id 
相關問題