gpt4 book ai didi

mysql - 如何更新此 SQL 查询以提供我想要的结果?

转载 作者:行者123 更新时间:2023-11-29 06:46:50 25 4
gpt4 key购买 nike

我有如下两个表:

列表

listing_id
----------
111111
111113

listings_features_table

id  listing_id  feature_id
------------------------------
1 111111 4
2 111111 1
5 111113 9
6 111113 1
7 111113 4

我试图只获取具有我指定的所有 feature_id 的结果。所以在我的例子中,如果我指定 (1, 4, 9),只有 listing_id 111113 在 feature_id 列中有这些,这就是我想要返回的。

我试过在我的查询中使用 IN,但它等同于 OR,这就是我得到错误结果的原因。

以下是我正在使用的查询:

SELECT * FROM listings_features
JOIN listings ON listings.listing_id=listings_features.listing_id
WHERE listings_features.feature_id IN (1,4,9) GROUP BY listings.listing_id

结果如下:

id  listing_id  feature_id  listing_id
----------------------------------------------
1 111111 4 111111
5 111113 9 111113

有什么方法可以用来获得以下结果:

id  listing_id  feature_id  listing_id
----------------------------------------------
5 111113 1, 4, 9 111113

或者我应该在 php 级别上这样做吗?

最佳答案

这是一个使用 group_concat() 进行比较的技巧:

SELECT *
FROM listings_features lf JOIN
listings l
ON l.listing_id = lf.listing_id
WHERE lf.feature_id in (1,4,9)
GROUP BY l.listing_id
HAVING group_concat(distinct lf.feature_id order by lf.feature_id) = '1,4,9';

如果您想要这些功能但不关心其他功能,请删除 where 子句。

关于mysql - 如何更新此 SQL 查询以提供我想要的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215590/

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