在MySQL中按一个表排序

时间:2014-10-03 19:45:50

标签: mysql sql

我有两个表(SQL Fiddle available here):

ID          Company_ID        Name
1            1                Jones
2            2                Smith
3            3                Kim
4            2                Takahashi
5            3                Patel
6            1                Muler

公司

ID           Name
1            QQQ
2            AAA
3            MMM

我希望按照他们工作的公司名称订购一组人员。

SELECT * FROM People WHERE(some where子句)ORDER BY 帮助!

3 个答案:

答案 0 :(得分:2)

你应该join两个表:

SELECT   p.* 
FROM     People p
JOIN     Companies c ON c.ID = p.CompaniyID
WHERE    --(Some where clause) 
ORDER BY c.Name ASC

答案 1 :(得分:1)

SELECT * FROM People INNER JOIN Companies ON Company_ID = Companies.ID ORDER BY Companies.Name

答案 2 :(得分:1)

您需要将人员表与公司表相关联才能执行此操作。您可以通过笛卡尔积来实现,可以通过显式连接子句或只是from中每个表之间的逗号来完成。还需要一个条件来判断第一个表中的哪个字段需要与第二个表的字段对应,否则表1中的每一行都与表2的每一行相关联,这在这种情况下不是您想要的。 / p>

所以这就是它的样子:

SELECT *
FROM   TABLE_ONE,
       TABLE_TWO
WHERE
       FOREIGN_KEY_IN_TABLE_ONE = PRIMARY_KEY_IN_TABLE_TWO
ORDER BY
       COLUMN_THAT_YOU_WANT_TO_SORT_ON

使用join子句的其他语法就像这样

SELECT *
FROM TABLE_ONE INNER JOIN TABLE_TWO ON FOREIGN_KEY_TABLE_ONE = PRIMARY_KEY_TABLE_TWO
ORDER BY
       COLUMN_THAT_YOU_WANT_TO_SORT_ON

尝试阅读联接方法。 INNER JOIN不是唯一的可能性。