下面的查询运行良好,并且运行速度非常快。但是,它显示出一些非常奇怪的行为,如下所述。
然而,在 PHP 中,它似乎可以自行决定它适用于哪些 id。我确信代码是正确的。我在 PHP 中使用 PDO 并根据需要绑定变量。
因此,例如,如果我将 author_id 600 传递给它,它将起作用,但如果我将 author_id 2 传递给它,它将不起作用并且不会带回任何记录。但是,如果我回显查询并将其粘贴到 MySQL 中并运行它,它适用于两个 id。似乎 PDO 无法将变量绑定到某些 id 上。我已经回显了 id 变量,它确实包含正确的 id。
有没有其他人经历过这种行为?我觉得非常非常不寻常。
SELECT
GROUP_CONCAT(a.author_id) AS author_ids
FROM
references_final AS rf
INNER JOIN (reference_authors AS ra INNER JOIN authors_final AS a ON (ra.author_id = a.author_id))
ON (rf.reference_id = ra.reference_id)
GROUP BY rf.reference_id HAVING :author_id IN (author_ids)