Mysql SQL仅在所有指定条件均为true的情况下连接表
假设我有两个表“cars”和“properties”,由表“car\u properties”链接。我可以选择所有有电动车窗或收音机或两者的汽车,执行如下操作Mysql SQL仅在所有指定条件均为true的情况下连接表,mysql,sql,Mysql,Sql,假设我有两个表“cars”和“properties”,由表“car\u properties”链接。我可以选择所有有电动车窗或收音机或两者的汽车,执行如下操作 SELECT cars.id FROM cars JOIN car_properties ON cars.id = car_properties.car_id WHERE car_properties.property_id = 1 OR car_properties.property_id = 2 其中,
SELECT cars.id
FROM cars
JOIN car_properties
ON cars.id = car_properties.car_id
WHERE
car_properties.property_id = 1
OR car_properties.property_id = 2
其中,“电动车窗”的属性标识为“1”,而“车载收音机”的属性标识为“2”
但是,我真正想做的是只选择具有两种属性的汽车(而不仅仅是一种或另一种或两者)
我想这很简单,但最有效的方法是什么?加入两次:
SELECT cars.id
FROM cars
JOIN car_properties AS cp1
ON cp1.car_id = cars.id
AND cp1.property_id = 1
JOIN car_properties AS cp2
ON cp2.car_id = cars.id
AND cp2.property_id = 2
;
请格式化您的SQL代码。不要把整件事放在一条长线上。你会在这里找到很多关于这种情况的答案:你的问题表明你的car\u properties表的结构是car\u properties{property\u id,value}。如果是这种情况,您可能会发现建议重新设计此属性,以便每个唯一属性(属性ID)都是一个单独的列。它将帮助您避免这种情况。@obserobot完全正确。抱歉。@Carth谢谢,但我真的认为这不适合我的特定应用程序。