gpt4 book ai didi

mysql - 查找匹配和空白的行

转载 作者:行者123 更新时间:2023-11-29 07:27:32 26 4
gpt4 key购买 nike

我有一张用户表和一张电子签名表 - 我希望能够针对给定的文档显示谁已经签名,谁还没有。

假设我们有员工:

EID   Name
1 Bob
2 Tom
3 Fred

签名:

EID    Document Signature
1 1 Bob
1 2 Bob
1 3 Bob
2 1 Tom
3 2 Fred

我的问题是我可以让它在文档 4 中正常工作 - 因为没有人签名我可以查看文档在哪里是空的

但是,例如,如果我查找文档 2,那么我目前正在将员工从列表中遗漏

我想看文档2

EID Signature
1 Bob
2
3 Fred

对于文档 4,我希望看到:

EID Signature
1
2
3

对于文档 1:

EID Signature
1 Bob
2 Tom
3

我尝试使用的查询是:

SELECT e.eid, s.signature 
from employees e
left join signatures s on e.eid=s.eid
where s.document=? or s.document IS NULL group by e.eid

最佳答案

存在多个问题:

  • 每当使用 Left Join 时,右侧表上的任何 Where 条件都应放在 On 子句中。否则,它会过滤你的结果集,即使没有匹配的行(失去 Left Join 的目的)/
  • 要比较 null 值,我们使用 IS NULL . = null 不起作用。在这种情况下,如果我们将条件转移到 On 子句,我们也不需要检查 null 值。
  • Group By 用法无效,实际上不需要。使用 Group By 时,只有聚合列或在 Group By 中指定的列应该出现在 Select 中。引用:https://stackoverflow.com/a/41887524/2469308

尝试以下操作:

SELECT e.eid, s.signature 
FROM employees e
LEFT JOIN signatures s
ON e.eid=s.eid AND
s.document = ?

关于mysql - 查找匹配和空白的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53108856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com