我有一个Actions表来记录用户采取的操作:
ActionId, UserId
操作表包含有关操作的名称和其他详细信息,用户表同样包含有关用户的名称和详细信息。
现在,在我的应用程序中,我想告知用户他的朋友采取的行动,例如:
“人A,B人,C人有 采取了这个行动。“
要做到这一点,我目前正在使用GROUP_CONCAT()来连接人们的名字,如:
SELECT GROUP_CONCAT(name) FROM Users
LEFT JOIN Actions ON Users.UserId = Actions.UserId
WHERE ActionId = '123'
但是,我想以两种方式个性化此消息。
我想在最后一个用户之前使用“...,和”,所以听起来比机器生成列表更自然。
如果用户也是采取此操作的人之一,我想显示如下消息:
“人A,人B,人C和你 采取了这个行动。“
实现这一目标最优雅的方法是什么?我正在寻找一种对大规模系统足够有效的解决方案。
答案 0 :(得分:0)
在SQL中真的没有优雅的方法来做这种事情。你当然可以编写一个光标来检查各种条件并在你进行时构建字符串。