我有一个包含两个 id
列和一个 name
列的表,第一个 id
列是主键,第二个引用的是主键或为 NULL。
+--+-----+----+
|id|subid|name|
+--+-----+----+
|1 |NULL |Tom |
+--+-----+----+
|2 |1 |Will|
+--+-----+----+
给定一个名称,我想仅使用一个 SQL
语句来输出具有该给定名称的所有条目,但如果辅助 id
字段引用主字段键,以输出该条目。
使用上面的示例,如果我输入“Tom”,我想输出 name
=“Tom”,如果我输入“Will”我也想输出 name
= "Tom"吗?
仅通过一个 SQL 语句就可以实现这一点,因为我想避免循环结果。
最佳答案
是的。您想为此使用 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;
关于MySQL从表中引用自己的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205975/