gpt4 book ai didi

mysql - sql - 如何进行此查询?

转载 作者:行者123 更新时间:2023-11-29 01:35:19 25 4
gpt4 key购买 nike

我花了几天时间想弄明白,但没有成功!

我有这样的表:

user:
id, name

event:
id
userId
startAt
endAt

如何编写查询让所有用户:

  • 没有分配事件
  • 或有开始和结束(已完成)的事件
  • 并且没有没有endAt的事件
  • 这可以描述为可用用户。

这是我的(不成功的)尝试:

SELECT *
FROM user
LEFT JOIN event ON user.id = event.userId
WHERE
startAt IS NOT NULL AND endAt IS NOT NULL
OR event.userId IS NULL

这是sql fiddle

http://sqlfiddle.com/#!9/aa55cd

上面的查询应该返回 3 个用户。 id 为 1 的用户应该被跳过,因为他们 .有没有结束日期的事件。

最佳答案

您可以在相关子查询中使用 NOT EXISTS 来查找“可用”用户:

SELECT *
FROM user u
WHERE NOT EXISTS (
SELECT *
FROM `event` e
WHERE e.userId=u.id
AND e.startAt IS NOT NULL
AND e.endAt IS NULL
)

Demo.

id  Name
-- -------
2 Michael
3 Jenny
4 June

关于mysql - sql - 如何进行此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123984/

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