请教, SELECT 有多行结果, mysql 能不能做到按这种指定格式,进行单行输出?

363 天前
 qazwsxkevin

例如,SELECT id FROM record_tbl WHERE id > 7;
会有 9,14,22,36 结果
直接想要一个:

'9','14','22,'36'                    

不知道 mysql 的语法,能不能直接这样输出呢?

3050 次点击
所在节点    MySQL
16 条回复
iseki
363 天前
可以,去聚合函数里看看,肯定有
thinkershare
363 天前
这种问题,建议你去问 ChatGPT, 100%能告诉你答案
akira
363 天前
group concat , concat 之类的
silentsky
363 天前
那必须可以
bthulu
363 天前
可以的, select JSON_ARRAYAGG(id) FROM record_tbl WHERE id > 7;
actar
363 天前
select group_concat(concat('\'', id, '\''))
from (select 9 as id
union all
select 14 as id
union all
select 22 as id
union all
select 36 as id) t;
xwayway
363 天前
@actar 你可真是可小天才
shakoon
363 天前
需求描述不清晰。你是想要最大的那个吗? SELECT MAX(id) FROM record_tbl WHERE id > 7
tedzhou1221
363 天前
行转列
tedzhou1221
363 天前
```sql
select group_concat(concat('"',user_id,'"'))
from (select user_id
from sys_user where sys_user.user_id > 100) as `a`
```
retanoj
363 天前
你需要的是 group_concat 和 concat 函数

select GROUP_CONCAT(id) from record_tbl where id > 7; 会输出

9,14,22,36

如果需要引号就

select GROUP_CONCAT( concat( "'", id, "'" ) ) from record_tbl where id > 7;
chinni
363 天前
group_concat 注意默认长度限制 1024
另外 这类逻辑 如果只是简单查询 推荐用程序逻辑去处理
sitboy
363 天前
是不是不准贴 chatgpt 的答案了啊?
montaro2017
363 天前
SELECT
GROUP_CONCAT( ID )
FROM
( SELECT 9 AS ID UNION SELECT 14 AS ID UNION SELECT 22 AS ID UNION SELECT 36 AS ID ) T

SmartTom
363 天前
你这太面向结果编程了。可以加个虚拟列 然后在外层地 group_concat(id),对虚拟列 group by (v)
SmartTom
363 天前
@SmartTom
with t as (SELECT id , 'vt' as v FROM record_tbl WHERE id > 7)
select GROUP_CONCAT(t.id) from t GROUP BY t.v

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX