Приведенный ниже запрос работает хорошо и работает достаточно быстро для того, что он делает. Однако это демонстрирует очень странное поведение, описанное ниже.
Однако в PHP кажется, что он сам решает, для каких идентификаторов он будет работать. Я уверен, что код правильный. Я использую PDO в PHP и привязываю переменные по мере необходимости.
Так, например, если я передам его author_id 600, он будет работать, но если я передам его author_id 2, он не будет работать и не вернет никаких записей. Но если я повторяю запрос, вставляю его в MySQL и запускаю, он работает для обоих идентификаторов. Казалось бы, PDO не может связать переменную на некоторых идентификаторах. Я повторил переменную 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)