2014-10-03 152 views
0

一個表我有兩個表(SQL小提琴可用here):ORDER BY在MySQL

人民

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 clause)ORDER BY HELP!

+0

您不想在輸出中輸入公司名稱*你只需要按名稱排序? – 2014-10-03 19:48:11

+0

這是正確的。只有輸出順序。 – JVMX 2014-10-03 19:48:56

回答

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
SELECT * FROM People INNER JOIN Companies ON Company_ID = Companies.ID ORDER BY Companies.Name 
1

您需要百姓餐桌與公司錶鏈接做到這一點。您可以通過笛卡爾產品來實現這一點,這可以通過顯式連接子句完成,也可以通過from中的每個表之間的逗號來完成。還需要一個條件來告訴第一個表中的哪個字段需要與第二個表的字段相對應,否則表1中的每一行都與表2中的每一行相關聯,這在這種情況下不是您想要的。

所以這是它會是什麼樣子:

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 

與加盟條款其它語法會是這樣的

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不是唯一的可能性。