Sql 是否可以进行如下查询:WHERE IF(q.id不在(选择…?)。。。?

Sql 是否可以进行如下查询:WHERE IF(q.id不在(选择…?)。。。?,sql,Sql,可以这样进行查询吗?有一些错误。。。 查询应检查用户是否使用q.id回答了问题 SELECT pictureid, id, points FROM questions q WHERE IF (q.id NOT IN (SELECT questions_id FROM history h WHERE h.users_id = 3)) 对 对 使用不存在也

可以这样进行查询吗?有一些错误。。。 查询应检查用户是否使用
q.id
回答了问题

SELECT pictureid,
       id,
       points 
  FROM questions q 
 WHERE IF (q.id NOT IN (SELECT questions_id 
                          FROM history h 
                         WHERE h.users_id = 3))


使用
不存在
也会解决在
中使用
时出现的
NULL
问题

SELECT pictureid, id, points
FROM questions q
WHERE NOT EXISTS
(
    SELECT questions_id
    FROM history h
    WHERE h.questions_id = q.questions_id
    AND h.users_id = 3
)
如果您想在中使用,请执行此操作

SELECT pictureid, id, points
FROM questions q
WHERE q.id NOT IN
(
    SELECT questions_id
    FROM history h
    WHERE h.users_id = 3
    AND questions_id IS NOT NULL
)

使用
不存在
也会解决在
中使用
时出现的
NULL
问题

SELECT pictureid, id, points
FROM questions q
WHERE NOT EXISTS
(
    SELECT questions_id
    FROM history h
    WHERE h.questions_id = q.questions_id
    AND h.users_id = 3
)
如果您想在中使用,请执行此操作

SELECT pictureid, id, points
FROM questions q
WHERE q.id NOT IN
(
    SELECT questions_id
    FROM history h
    WHERE h.users_id = 3
    AND questions_id IS NOT NULL
)

这是用于什么数据库系统的?IF()应该包含三个参数:要求值的表达式、为true时返回的表达式、为false时返回的表达式。您只提供了第一个参数。这是用于什么数据库系统的?IF()应该有三个参数:要求值的表达式,为true时返回的表达式,为false时返回的表达式。您只提供了第一个参数。我重复了两次“不在”。谢谢Pavel。我重复了“不在”两次。谢谢Pavel。向子查询添加和问题\u id不为NULL,否则如果有NULL,它将不正确,这就是我喜欢存在和不存在的原因。向子查询添加和问题\u id不为NULL,否则如果有NULL,它将不正确,这就是我喜欢存在和不存在的原因