gpt4 book ai didi

mysql - 按 2 列的计数过滤 MySQL 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:12 24 4
gpt4 key购买 nike

我有这个问题:

select id, store_id, name from ads 
where name regexp '^.*(Massa+.*effect+)|(Glutamina+.*Black+.*Belt+).*$';

结果是:

 id | store_id | name
----|----------|-----------------
94 | 9 | Massa effect
96 | 9 | Glutamina black belt
131 | 1 | Glutamina black belt
143 | 55 | Massa effect

我需要一个查询来返回属于同一商店 (store_id) 的两种搜索产品(Massa effect 和 Glutamina black belt)。

在示例中,我希望结果是:

 id | store_id | name
----|----------|-----------------
94 | 9 | Massa effect
96 | 9 | Glutamina black belt

编辑

我在这张表上的一些数据示例:

 id | store_id | name
----|----------|-----------------
2 | 4 | iPhone
91 | 9 | Sweet sweat
94 | 9 | Massa effect
96 | 9 | Glutamina black belt
102 | 9 | BCCA 2500
131 | 1 | Glutamina black belt
143 | 55 | Massa effect
147 | 55 | Massa Effect
200 | 77 | Hey
202 | 78 | Topster
206 | 55 | Massa X

最佳答案

我不是 100% 确定这是否是您想要的,但您可以尝试这样的操作:

SELECT id, store_id, name 
FROM ads
WHERE name regexp '^.*(Massa+.*effect+)|(Glutamina+.*Black+.*Belt+).*$'
AND EXISTS(
SELECT null FROM ads as a WHERE
name regexp
'^.*(Massa+.*effect+)|(Glutamina+.*Black+.*Belt+).*$'
AND a.id != ads.id
AND a.store_id = ads.store_id
);

我很抱歉格式化。一般的想法是使用“存在”来检查表中是否有另一个元素具有相似的属性,但不是行本身。如果要确保名称不相同,可以在 where 子句中添加另一个条件 a.name != ads.name

关于mysql - 按 2 列的计数过滤 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46570415/

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