[这些值中的1个] IN [这些值中的1个]

时间:2013-03-08 11:32:29

标签: mysql subquery in-subquery

我有以下查询:

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行”。当第一个子查询返回多个值时,如何使查询起作用?像[在这些值中的任何一个]中找到的“这些值中的任何一个”?

3 个答案:

答案 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

应该工作