2016-01-23 213 views
0

此查詢工作正常:MySQL的子查詢與IN子句

SELECT country_name FROM countries WHERE country_id IN (23,86,79) 

,所以我可以得到國家的名稱基於這些COUNTRY_ID列表。但我想要的是像一個子查詢,讓他們:

SELECT country_name FROM countries WHERE country_id IN (SELECT office_id FROM countries WHERE country_code='FRA') 

我可以拿到辦公室Id的名字,而不是所有(在這種情況下應爲4)。 office_id和country_id是Int。任何幫助?

+1

? - SELECT country_name FROM countries WHERE country_code ='FRA' –

+0

查詢看起來很好。向我們展示一些數據和預期結果,以便我們可以看到發生了什麼問題 –

回答

2

爲什麼你需要這樣的錯誤/長時間查詢。爲什麼你不使用子查詢與

SELECT country_name 
FROM countries 
WHERE country_id IN (SELECT office_id 
         FROM countries 
         WHERE country_code='FRA') 

您發佈查詢(下面)的simpliy

SELECT country_name 
FROM countries 
WHERE country_code='FRA'; 
+0

子查詢返回幾個id(es:12,22,43,9)。有了這些ID我需要得到相應的國家名稱,如果我寫了「... IN(12,22,43,9)」這樣的問題,整個查詢都可以正常工作,並且我得到了四行,但使用了Select作爲子查詢,我只能得到一個值 – Ras

+0

您不需要第一個子查詢。只需在查詢條件中使用查詢條件......應該可以正常工作。如果不是的話,那麼從country_code ='fra''的國家選擇count(*),看看count是多少......這會告訴你什麼是錯的。 – Rahul

+0

對不起,我一直不太清楚。內部查詢「SELECT office_id FROM countries WHERE country_code ='FRA'」,返回一個逗號分隔值(es:「12,222,223」)的字符串,我將在IN子句中使用這個 – Ras