[英]Mysql GROUP_CONCAT using a GROUP_CONCAT in the query's IN()
我有一个查询:
SELECT GROUP_CONCAT(stores.store_name)
FROM stores
WHERE stores.id IN
(
SELECT
GROUP_CONCAT(users_x_stores.store_id) as stores_list
FROM users_x_stores
WHERE users_x_stores.user_id = 4
);
子查询单独运行时,将返回3个结果的group_concat-14,4,8。
ID 14、4、8有相应的行-但整个查询仅返回一个商店名称。
如果我将子查询更改为简单的14、4、8,则整个查询有效,并返回3个商店名称的串联。
谁能告诉我我在这里做错了什么?
谢谢。
避免对子查询执行IN,您可以使用JOIN。
假设users_x_stores.store_id包含该用户的单个商店ID(在users_x_stores上的另一行中,同一用户的另一个商店):
SELECT GROUP_CONCAT(stores.store_name)
FROM stores
INNER JOIN users_x_stores
ON stores.id = users_x_stores.store_id
WHERE users_x_stores.user_id = 4
如果sers_x_stores.store_id是用逗号分隔的商店列表(不是很好的表设计,可能不是您所做的,但是从原始帖子中看不出来),则可以执行此操作
SELECT GROUP_CONCAT(stores.store_name)
FROM stores
INNER JOIN users_x_stores
ON FIND_IN_SET(stores.id, users_x_stores.store_id)
WHERE users_x_stores.user_id = 4
尝试这个
SELECT GROUP_CONCAT(stores.store_name)
FROM stores
WHERE stores.id IN
(
SELECT
users_x_stores.store_id as stores_list
FROM users_x_stores
WHERE users_x_stores.user_id = 4
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.