Mysql 按大小写忽略左联接查询中的多条记录

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

我试图使用我的查询来查找与该动物没有任何关系的特定Worker.wname。wild是真的

例如,从下表中,我需要返回“Yossi”,因为他没有带wild=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