mysql - MySQL SELECT 记录从特定日期不存在
问题描述
我有两张桌子:
用户
1. id
2. name
3. surname
4. email
门票
1. id
2. id_user
3. film
4. date_selling
我想列出所有用户自特定日期以来没有买过票。
我尝试了很多组合,但我找不到达到结果的正确方法。
查询一:
SELECT u.*
FROM users u
LEFT JOIN tickets t ON t.id_user = u.id
WHERE t.date_selling >= "2019-01-01"
GROUP BY u.id HAVING COUNT(t.id) = 0;
查询 2:
SELECT u.*
FROM users u
WHERE (NOT EXISTS(
SELECT 1
FROM tickets t
WHERE t.id_user = u.id AND t.date_selling >= "2019-01-01"));
解决方案
你需要一个 WHERE 子句:
SELECT u.* FROM users u
WHERE NOT EXISTS(
SELECT 1 FROM tickets t
WHERE t.id_user = u.id AND t.date_selling >= '2019-01-01'
);
或使用 LEFT JOIN:
SELECT u.*
FROM users u LEFT JOIN tickets t
ON t.id_user = u.id AND t.date_selling >= '2019-01-01'
WHERE t.id_user IS NULL;
推荐阅读
- runtime-error - 无法在 Dyalog APL 中使用用户命令
- javascript - 在 React 路由器中使用“链接到”时如何刷新页面?
- java - 用 Read 和 Write 方法实现类
- python - 将迭代函数转换为递归函数
- rust - 使用特征边界指定返回类型与 impl 之间的区别
- visual-studio-code - 如何在 VSCode 中获取相对路径?
- r - 如何使用ggmap创建世界地图?
- asp.net-core-mvc - 将参数传递给 Controller 中的 Index()
- swift - Swift Firestore 数据映射返回 nil
- php - Paypal 付款屏幕显示的价格与我在我的 paypal 帐户中收到的价格不同