mysql:获取所有会议id=x且为';s的父级可用,但不可用';I don’我不在乎自己有没有空?
如何选择符合以下条件的所有记录: 获取meeting_id=x的所有记录,其父项可用或没有父项,但不关心其本身是否可用mysql:获取所有会议id=x且为';s的父级可用,但不可用';I don’我不在乎自己有没有空?,sql,mysql,Sql,Mysql,如何选择符合以下条件的所有记录: 获取meeting_id=x的所有记录,其父项可用或没有父项,但不关心其本身是否可用 table people: id, name, address, meeting_id, available, parent_id 未经测试,请尝试。如果没有父合并,则将选择第二个参数并使用自动1 SELECT * FROM people WHERE meeting_id=x AND ( COALESCE( (SELECT available F
table people:
id, name, address, meeting_id, available, parent_id
未经测试,请尝试。如果没有父合并,则将选择第二个参数并使用自动1
SELECT * FROM people
WHERE
meeting_id=x AND
( COALESCE( (SELECT available FROM people AS parent WHERE id=parent_id), 1) )
您可以使用“加入”来执行此操作:
SELECT
child.*,
parent.name
FROM
people child
LEFT JOIN
people parent on (child.parent_id = parent.id)
WHERE
(parent.available = 1 or parent.id IS NULL) AND
child.meeting_id = x;
有关详细信息,请参见CREATE TABLE语句将有所帮助,而不仅仅是列列表,因为数据类型和可选性(NULL或NOT NULL)将有助于我们帮助您。我假设parent_id为nullable是的,它可以为NULL,并且您的查询可以完成此任务。谢谢,我将阅读更多关于coalescechild.available的内容,因为它本身并不关心是否可用。你的意思是说,“parent.id为NULL”不是必需的吗?啊,终于找到了。答案是固定的。我猜这个查询会比连接更快,但不是特别确定。
select * from people outt
where meeting_id = x and
(parent_id is null or exists (select 1 from people inn where inn.id = outt.parent_id and available = 1))