从另一个表中按ID排序时从MySQL表中选择

时间:2011-08-04 18:14:45

标签: mysql select sql-order-by

这可能是非常简单的事情。如果是的话,我道歉。我还在学习MySQL。

说,我有两张桌子:

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

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

Table2中的每一行都指定了从Table1中选择元素的顺序。表2中的itmID字段链接到表1中的id字段。

所以就在这时从表1中选择元素我就这样做了:

SELECT * FROM `Table1`;

但是你如何根据Table2订购它们呢?

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

4 个答案:

答案 0 :(得分:4)

从第一个表中选择,将其连接到第二个表,然后按第二个表排序。像

这样的东西
SELECT * 
FROM   table1
LEFT JOIN table 2 on table.id = table2.id
ORDER by table2.itmID

答案 1 :(得分: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

答案 2 :(得分:3)

Ryan的答案几乎是正确的

SELECT *
FROM table1
INNER JOIN table2 on table1.id = table2.itmID
ORDER BY table2.id

答案 3 :(得分:2)

http://dev.mysql.com/doc/refman/5.5/en/join.html

SELECT * FROM `Table1`
INNER JOIN `Table2` USING (`id`)
ORDER BY `Table2`.`itmID` ASC