gpt4 book ai didi

多次在同一列上使用 MySQL AND 子句

转载 作者:行者123 更新时间:2023-11-29 01:09:16 25 4
gpt4 key购买 nike

我正在尝试检索具有多种设施的属性。

但表结构是:属性在 property 表中,便利设施与属性相关联。

便利设施表有:

id property_id amenity_name ....

现在我想搜索有“ parking 场”和“电梯”等设施。

select property_id from amenities where name = 'parking' and name = 'elevator';

我不想为此触发连接查询。

在这种情况下有人能救我吗?

最佳答案

试试这个:

SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2

这是发生了什么......

首先,获取具有您感兴趣的便利设施的特性 ID 列表:

SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')

然后缩小列表范围以仅包括那些拥有不止一项便利设施的特性 ID。按 property_id 分组会根据结果所属的 property_id 将结果捆绑到唯一的组中。然后,我们简单地计算每组中 amenity_names 的数量并检查它是否为 2 或更大。

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

上述代码中的一个假设是您不会多次将相同的 amenity_name 与 property_id 相关联。要消除与此相关的问题,请更改 HAVING 子句以包含 DISTINCT 以清除重复项,但除非您需要,否则不要添加它。

GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2

关于多次在同一列上使用 MySQL AND 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com