2014-01-18 2 views
0


У меня есть таблица с двумя колоннами id и name столбца первого из id столбцов является первичным ключом, вторым либо относится к первичному ключу или NULL.MySQL со ссылкой на собственный идентификатор внутри таблицы

+--+-----+----+ 
|id|subid|name| 
+--+-----+----+ 
|1 |NULL |Tom | 
+--+-----+----+ 
|2 |1 |Will| 
+--+-----+----+ 

Учитывая имя, я хотел бы, используя только один SQL заявление для вывода всех записей с этим заданным именем, но если вторичное id поле относится к первичному ключу, для вывода этой записи вместо этого.

Используя вышеприведенный пример, если я ввожу «Том», я хотел бы выводить name = «Том», и если я буду вводить «Воля», я бы хотел вывести name = «Том» тоже?

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

ответ

0

Да. Вы хотите использовать join для этого и выражение в select:

select t.* 
from table t left outer join 
    table sub 
    on t.subid = sub.id 
where 'Tom' = t.name or 'Tom' = sub.name; 
+0

Вот идеальные, спасибо большое !! –

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