除了最后的结果外,如何将字符连接到MySQL结果?
所以:
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
答案 0 :(得分:2)
如果您不想使用group concat(这将是执行此操作的最佳方式...您可以删除最后一行,然后使用union重新添加或使用字符串上的聚合函数返回最大值。< / p>
(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了解如何设置会话最大值并使用它
答案 1 :(得分:0)
我想你想要输出,以便你可以在sql的IN
参数中使用它?如果是,那么您可以使用以下内容: -
select * from `some_other_table` where `friends` in (select `friends` from `friends`);
告诉我,如果我错了
答案 2 :(得分:0)
我认为如果最终的朋友值具有最高ID,你可以尝试这样的事情:
SELECT
CASE friends
WHEN (ID != (SELECT MAX(ID) FROM TABLE)) THEN friends
ELSE concat(friends,',') END
FROM
FRIEND_TABLE
干杯!