如何合并两个MySQL SELECT查询,获取用户屏蔽与被屏蔽列表?
合并用户屏蔽列表查询的解决方案
你可以用聚合函数+GROUP_CONCAT实现单查询同时获取两个列表,避免重复数据库操作,具体实现如下:
SQL 查询语句
SELECT GROUP_CONCAT(DISTINCT blocking_id) AS blocking, GROUP_CONCAT(DISTINCT user_id) AS blockers FROM user_block WHERE user_id = 1 OR blocking_id = 1;
PHP 结果处理代码
// 假设已完成查询并获取结果对象$result $blocking = !empty($result->blocking) ? explode(',', $result->blocking) : []; $blockers = !empty($result->blockers) ? explode(',', $result->blockers) : [];
补充说明
GROUP_CONCAT会将符合条件的ID拼接为逗号分隔的字符串,DISTINCT用于过滤表中可能存在的重复记录- 若使用MySQL,
GROUP_CONCAT默认有长度限制,如需处理大量ID,可先执行SET SESSION group_concat_max_len = 1000000;临时调整限制值
内容的提问来源于stack exchange,提问作者timgavin
相关产品推荐
相关产品推荐

