检索执行特定操作并个性化消息的人员的姓名

时间:2010-03-11 11:43:28

标签: sql

我有一个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'

但是,我想以两种方式个性化此消息。

  1. 我想在最后一个用户之前使用“...,和”,所以听起来比机器生成列表更自然。

  2. 如果用户也是采取此操作的人之一,我想显示如下消息:

  3.   

    “人A,人B,人C和   采取了这个行动。“

    实现这一目标最优雅的方法是什么?我正在寻找一种对大规模系统足够有效的解决方案。

1 个答案:

答案 0 :(得分:0)

在SQL中真的没有优雅的方法来做这种事情。你当然可以编写一个光标来检查各种条件并在你进行时构建字符串。