我有以下查询:
SELECT A.id FROM logsen_alertes A
WHERE
( SELECT LA2.type_colocation_id
FROM logsen_liaisons_annonces_types_colocations LA2
WHERE LA2.annonce_id = 25 AND LA2.annonce_type = 4
)
IN
( SELECT L4.souhait
FROM logsen_liaisons_alertes_souhaits L4
WHERE L4.alerte_id = A.id
)
当我的第一个子查询只返回1个值时,此查询很有效,因为这是IN()的工作原理,在一组值中查找1个唯一值。当我的第一个子查询返回2个或更多值时,MySQL返回“Subquery返回超过1行”。当第一个子查询返回多个值时,如何使查询起作用?像[在这些值中的任何一个]中找到的“这些值中的任何一个”?
答案 0 :(得分:1)
尝试:
SELECT DISTINCT A.id FROM logsen_alertes A
JOIN logsen_liaisons_alertes_souhaits L4 ON L4.alerte_id = A.id
JOIN logsen_liaisons_annonces_types_colocations LA2
ON LA2.type_colocation_id = L4.souhait AND LA2.annonce_id = 25 AND LA2.annonce_type = 4
答案 1 :(得分:1)
试试这个:
SELECT
A.id
FROM
logsen_alertes A
INNER JOIN logsen_liaisons_alertes_souhaits L4
ON L4.alerte_id = A.id
INNER JOIN logsen_liaisons_annonces_types_colocations LA2
ON LA2.type_colocation_id = L4.souhait
WHERE
LA2.annonce_id = 25 AND LA2.annonce_type = 4
答案 2 :(得分:0)
SELECT DISTINCT A.id FROM logsen_alertes AS A
INNER JOIN logsen_liaisons_alertes_souhaits AS L4
ON (L4.alerte_id = A.id)
INNER JOIN logsen_liaisons_annonces_types_colocations AS LA2
ON (LA2.type_colocation_id = L4.souhait)
WHERE LA2.annonce_id = 25 AND LA2.annonce_type = 4
应该工作