gpt4 book ai didi

MySQL - 根据另一个查询的结果过滤结果(显示不同)

转载 作者:行者123 更新时间:2023-11-29 08:24:25 26 4
gpt4 key购买 nike

我有两个疑问:

1:

select Firstname, Lastname, ContactID from contacts where account = 'The Beatles';

返回

Firstname | Lastname | ContactID
John Lennon Beatle01
Paul McCartney Beatle02
Ringo Starr Beatle03
The Other1 Beatle04

我的第二个查询:

select contacts.lastname, contacts.firstname,
activities.contactid, activities.completeddate
from contacts, activities
where activities.contactid=contacts.contactid
AND completeddate >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND completeddate < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY
order by contacts.lastname asc;

如果上周有事件,它将返回类似以下内容的内容:

Firstname | LastName | CompletedDate
John Lennon 2013-08-21 13:06
Paul McCartney 2013-08-21 15:04

我本质上想要运行的是异常查询。IE。显示上周没有事件的用户的姓名。

因此查询 3 将返回类似以下内容的内容:

Firstname | Lastname | ContactID
Ringo Starr Beatle03
The Other1 Beatle04

所以本质上我需要显示查询 1 中不存在于查询二中的所有用户。我尝试了几种连接、内部连接等,但都失败了。

谁能推荐一个简单的方法来做到这一点?

最佳答案

对于“异常”查询,请考虑“外连接”。在这种情况下,左外连接即可,但您需要将现有条件移至on子句中:

select c.lastname, c.firstname, a.contactid, a.completeddate
from contacts c left join
activities a
on a.contactid = c.contactid and
completeddate >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY and
completeddate < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY
where a.contactid is null
order by c.lastname asc;

a.contactid 的最终检查是检查是否没有匹配项——这是您的异常报告。

关于MySQL - 根据另一个查询的结果过滤结果(显示不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363950/

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