IN运算符仅在参数为特定值时返回


IN operator only returns if parameter is a specific value

我有一个问题表(包含问题)和一个标记表(包含每个问题的标记(用整数表示))。

我想做的是得到一个问题列表,这些问题的标签与IN运算符中的标签相同。

但是,如果1存在,则查询当前返回所有问题,如果不存在,则返回0。它不返回标记整数与IN运算符匹配的问题。

下面是一个SQLFiddle:http://sqlfiddle.com/#!2/c2ded3/2

似乎id = questions_tags.q_id中的id在某种程度上是模糊的。如果你做得更具体,它就会成功:

SELECT id FROM questions WHERE EXISTS (
    SELECT 1 FROM questions_tags WHERE
          questions.id = questions_tags.q_id AND
          questions_tags.t_id IN (1)
);

可能我错了,但根据我对这个问题的理解,这个查询可能会有所帮助:-

SELECT questions.id,
       questions_tags.id
FROM   questions,
       questions_tags
WHERE  questions.id = questions_tags.id
       AND questions_tags.t_id IN ( 1 ); 

希望这能有所帮助;