除最后一条记录外,MySql会连接一个字符

时间:2014-10-06 16:38:35

标签: mysql sql

除了最后的结果外,如何将字符连接到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

3 个答案:

答案 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)

Fiddle Demo

更好的方法就是这样

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

Another Fiddle

然而,最简单的方法是使用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

干杯!