Mysql 根据“不存在”查找与特定约束匹配的记录
有一个选择某些数据的查询。我正在创建一个抑制表,它将忽略包含某些数据的行Mysql 根据“不存在”查找与特定约束匹配的记录,mysql,Mysql,有一个选择某些数据的查询。我正在创建一个抑制表,它将忽略包含某些数据的行 suppression: occasion_id | days_before reminder: id | days_before | occasion_id 我利用不存在来忽略某些提醒的选择 问题是 SELECT id from Reminder AS r WHERE NOT EXIST (SELECT 1 FROM Suppression s
suppression: occasion_id | days_before
reminder: id | days_before | occasion_id
我利用不存在来忽略某些提醒的选择
问题是
SELECT id
from Reminder AS r
WHERE NOT EXIST (SELECT 1
FROM Suppression s
WHERE s.occasion_id = r.occasion_id
AND s.days_before = r.days_before)
Reminder:1) 101| 1 |18
2) 102| 7| 18
Suppresion: 18 | 1
第一次提醒应忽略,第二次提醒应包括在内
例如,如果抑制表包含时机id-18和日期-1之前,则选择应忽略包含这些数据的提醒
在第二次提醒的情况下,子查询也返回“1”。为什么即使WHERE子句后面的语句不产生结果也会发生这种情况 我相信,通过简单的左连接和where子句中的IS NULL,可以更轻松地完成您想要完成的任务:
SELECT r.id
FROM Reminder AS r
LEFT JOIN Supression s ON s.id = r.id AND s.days_before = r.days_before
WHERE s.id IS NULL
你以错误的条件加入。 将连接条件从
s.id=r.id
更改为s.sition\u id=r.sition\u id
SELECT r.*
FROM Reminder AS r
inner JOIN Supression s ON s.occasion_id = r.occasion_id
AND s.days_before <> r.days_before
我想我误解了你的意思。你能给出一些示例数据(或者更好,一点sql技巧)并展示你想要检索什么吗?我的错!为了提高可读性,我更改了模型,但忘记了在下面的查询中进行相关更改。当(18,7)添加到抑制时,内部连接方法失败。NOT EXIST工作正常。G One,谢谢您的时间。我真的很感激。
SELECT id
from Reminder AS r
WHERE NOT EXISTs (SELECT 1
FROM Supression s
WHERE s.occasion_id = r.occasion_id
AND s.days_before = r.days_before)