2

我有以下查询:

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 会返回“子查询返回超过 1 行”。当第一个子查询返回多个值时,如何使我的查询有效?像“我在 [这些值中的任何一个] 中找到的 [这些值中的任何一个]”之类的东西?

4

3 回答 3

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
于 2013-03-08T11:42:16.640 回答
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  
于 2013-03-08T11:42:38.767 回答
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

应该管用

于 2013-03-08T11:43:25.617 回答