我有3张表和2个值
display.isUpload=2
userId=11(当前userId)
第一个
Table Ask
id INT
userId INT
qask VARCHAR
第二个
Table Display
id INT
askId INT
isUpload INT
第三个
Table Push
id INT
displayId INT
userId INT
逻辑询问显示为询问列表,当用户选择其中一个时,它将记录到推送表中。现在,我需要显示ask的所有记录,但不显示用户添加到推送的记录(我不知道如何在我当前的请求中做到这一点),并显示.isUploaded=2和ask.userId not in 11。(我无法从ask中删除记录)我当前的sql请求
SELECT
a.id as id,
a.qask as qask
FROM Ask AS a
JOIN Display AS d ON d.askId = a.id
WHERE d.isUploaded = 2 AND
a.userId NOT IN (11)
你的意思是你想要这个吗(我添加了最后一行):
SELECT
a.id as id,
a.qask as qask
FROM Ask AS a
JOIN Display AS d ON d.askId = a.id
WHERE d.isUploaded = 2 AND
a.userId NOT IN (11)
AND a.userId NOT IN ( SELECT id from Push)
您的问题不清楚,根据我的理解,我写了这个查询
SELECT
a.id AS id,
a.qask AS qask
FROM Ask AS a
LEFT JOIN Display AS d ON d.askId = a.id
LEFT JOIN Push AS p ON p.displayId = d.id
WHERE d.isUploaded = 2
AND p.id=NULL
AND a.userId <>11