2013-11-26 4 views
1

Я пытаюсь получить все id под typeid с помощью id Я хочу использовать только один запрос, чтобы сделать это, это можно сделать с помощью внутреннего запроса, подобного этому.MYSQL получить все id с помощью parentid и 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 

НО я воскликнул, что, когда вы знаете идентификатор, то почему ты используя запрос, чтобы снова получить один и тот же идентификатор. Я думаю, что вам не хватает информации.

+0

на самом деле я не запрашиваю в пользовательскую таблицу, я просто сделал пример простым. реальный запрос дал бы все предметы в категории. –

+0

@jay проверить этот запрос сначала, это вернет 4 и 5 оба. –

Смежные вопросы