2013-11-26 36 views
1

我想要使用id獲得所有id下的typeid我想只使用一個查詢來做到這一點,它可以用這樣的內部查詢來完成。MYSQL獲取使用parentid和id的所有id

SELECT id FROM users where typeId = (SELECT typeId FROM users where id = 5)

這會給我什麼,我想,但我聽說內部查詢速度很慢,所以我想做到這一點使用連接查詢。

用戶

id typeid name 
1 2  a 
2 2  b 
3 1  c 
4 3  d 
5 3  e 
+0

你的查詢看起來不錯,確實在MySQL子查詢通常比JOINS慢,但在你的特定查詢中,我不認爲它會有所作爲。 – fthiella

回答

0

這將是:

SELECT 
    a.id 
FROM 
    users AS a 
    LEFT JOIN users AS b 
     ON a.typeId=b.typeId 
WHERE 
    b.id = 5 

-check這個fiddle

+0

@jay你說的不對。它會做同樣的事情,我已經添加小提琴詳細 –

+0

謝謝你的小提琴 –

0

你想要什麼我不同意這個查詢知道:

SELECT id FROM users where typeId = (SELECT typeId FROM users where id = 5) 

你可以簡單的寫這個查詢爲:

SELECT t1.id 
    FROM users AS t1 
     LEFT JOIN users AS t2 
      ON t1.typeId = t2.typeId 
    WHERE t2.id=5 

但我驚呼,當你知道ID那麼你爲什麼使用查詢再次獲取相同的ID。我認爲你缺乏一些信息。

+0

其實我不是查詢到一個用戶表,我只是簡單的例子。真正的查詢會給出一個類別中的所有項目。 –

+0

@jay首先檢查這個查詢,這將返回4和5兩者。 –