MySql concat除最后一条记录以外的字符
问题描述:
如何将字符连接到除最后一个结果之外的MySQL结果?MySql concat除最后一条记录以外的字符
所以:
friends
-------------
friend-a
friend-b
friend-c
friend-d
friend-e
我现在做select concat(friends,',') from friends
这实际上给了我一个,
每个朋友的名字,但我不需要,
最后一个。
由于尺寸限制,我无法在此使用group_concat。
试图输出
friend-a,
friend-b,
friend-c,
friend-d,
friend-e
答
如果你不想使用组concat(这将是最佳的方式来做到这一点..你可以删除最后一行,然后加入联合或使用您的字符串聚合函数返回最大。
(select concat(friends,',') as friend
from friends
WHERE friends <> (SELECT friends
from friends
order by friends DESC
limit 1)
)
UNION
(SELECT friends
from friends
order by friends DESC
limit 1)
一个更好的方法来做到这一点是像这样
SET @a := (SELECT MAX(friends) FROM friends);
SELECT
CASE
WHEN friends <> @a
THEN concat(friends,',')
ELSE friends
END AS friends
FROM friends
GROUP BY friends
然而,最简单的方法是使用group_concat,并增加会话的大小...不是在你的.cnf文件中,而是为了会话......这样你就不会像服务器那样影响存储那。
见My Answer Here如何设置您的会话最大LEN和使用它
答
我猜你想要的输出,这样就可以在SQL的IN
参数使用它呢?如果是的话,那么你可以使用下列内容: -
select * from `some_other_table` where `friends` in (select `friends` from `friends`);
告诉我,如果我错了
答
我认为,如果最终的朋友值具有最高的ID,你可以尝试这样的事:
SELECT
CASE friends
WHEN (ID != (SELECT MAX(ID) FROM TABLE)) THEN friends
ELSE concat(friends,',') END
FROM
FRIEND_TABLE
干杯!
为什么不使用'从friends'选择GROUP_CONCAT(朋友)? – 2014-10-06 16:39:39
更改大小限制,请在查询前运行此设置'SET SESSION group_concat_max_len = 1000000;' – Mihai 2014-10-06 16:40:38
由于大小限制。 – Norman 2014-10-06 16:40:43