Mysql 按大小写忽略左联接查询中的多条记录
我试图使用我的查询来查找与该动物没有任何关系的特定Worker.wname。wild是真的 例如,从下表中,我需要返回“Yossi”,因为他没有带wild=t的行Mysql 按大小写忽略左联接查询中的多条记录,mysql,sql,postgresql,left-join,Mysql,Sql,Postgresql,Left Join,我试图使用我的查询来查找与该动物没有任何关系的特定Worker.wname。wild是真的 例如,从下表中,我需要返回“Yossi”,因为他没有带wild=t的行 wname | type | wild -------+-----------+------ David | Capricorn | f David | goat | f David | Lamb | f David | Tiger | t David | wolf | t
wname | type | wild
-------+-----------+------
David | Capricorn | f
David | goat | f
David | Lamb | f
David | Tiger | t
David | wolf | t
David | Wolf | t
Yossi | Capricorn | f
Yossi | goat | f
这是我到目前为止得到的查询(返回上表):
您只需要table
worker
,最简单的方法是使用NOT IN
操作符:
SELECT DISTINCT wname
FROM resposibility
WHERE wname NOT IN (SELECT wname FROM resposibility WHERE wild='t')
ORDER BY wname
您还可以按如下方式使用:
SELECT worker.wname
FROM resposibility
LEFT JOIN worker ON resposibility.wid = worker.wid
LEFT JOIN cage ON resposibility.cno = cage.cno
LEFT JOIN animal ON cage.cno = animal.cno
GROUP BY worker.wname
having bool_or(animal.type) is false
ORDER BY worker.wname
好的,我设法使用了你的代码并使其生效,我只将
animal.type
更改为animal.wild
,并等于TRUE或“yes”(在PostgreSQL中也是如此)。所以这个答案很有帮助。非常感谢你!我必须有笼子和动物桌,因为我从动物桌上得到了野生专栏。它有一个带框架的外键,Repobability只有一个用于框架的外键。。无论如何,Juregen D已经为我解决了这个问题。谢谢你的尝试。
SELECT DISTINCT wname
FROM resposibility
WHERE wname NOT IN (SELECT wname FROM resposibility WHERE wild='t')
ORDER BY wname
SELECT worker.wname
FROM resposibility
LEFT JOIN worker ON resposibility.wid = worker.wid
LEFT JOIN cage ON resposibility.cno = cage.cno
LEFT JOIN animal ON cage.cno = animal.cno
GROUP BY worker.wname
having bool_or(animal.type) is false
ORDER BY worker.wname