这是我的表格结构:
// mytable
+----+---------+
| id | related |
+----+---------+
| 1 | NULL |
| 2 | 1 |
+----+---------+
现在我需要选择 id = 1
以及所有有 related = 1
. 我的问题是:
select m1.*
from mytable m1
left join mytable m2 on m1.id = m2.related
where m1.id = 1
但它只返回第一行。怎么了?
5条答案
按热度按时间xxb16uws1#
你能试试这个密码吗
SELECT * FROM table WHERE (id = 1 AND related IS NULL) OR related = 1;
我创建了一个包含更多项的表,它会返回您想要的内容。看看这个myzjeezk2#
你可以做:
不需要自连接。
编辑:
如果需要性能,请将查询编写为:
并在上定义两个索引
mytable(id)
以及mytable(related)
.yzuktlbb3#
你可以尝试联合所有或如果你不想重复使用联合
zbdgwd5y4#
你需要使用内部连接。
7qhs6swi5#
如果我理解正确,您正在寻找: