Mysql 其中[1个值]在[1个值]中
我有以下疑问:Mysql 其中[1个值]在[1个值]中,mysql,subquery,in-subquery,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_souh
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个值时,此查询工作正常,因为在()中就是这样工作的,在一组值中查找1个唯一的值。当我的第一个子查询返回2个或更多值时,MySQL将返回我“子查询返回超过1行”。当第一个子查询返回多个值时,如何使查询工作?类似于“我在[ny of the values]中找到[any of the values]的地方”?试试:
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
试试这个:
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
应该有效就像一个符咒。我更喜欢这个答案而不是另一个答案,因为我听说每个查询限制都应该放在WHERE而不是JOIN中。@user2083586-不知道你在哪里听到过这种胡说八道。请从您的脑海中删除它-这是一个古老的学校,我不明白为什么您将“LA2.annonce_id=25和LA2.annonce_type=4”放在WHERE语句中,而不是放在JOIN语句中。你能澄清一下这个选择吗?@VaN-因为这是一个没有将两个表链接在一起的子句。只是一个表上的谓词。
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