合并两行数据

时间:2013-04-29 21:12:24

标签: mysql

我有以下SQL查询.. 它选择属于多个组的用户。 每个组对程序具有不同或可能相同的权限。

SELECT app_name, priv_access, priv_insert, priv_delete, priv_update, priv_export, priv_print 
FROM news_sec_groups_apps 
WHERE group_id IN (SELECT group_id 
                   FROM news_sec_users_groups 
                   WHERE login = 'test2')

我要完成的是创建一个包含一行的数组,显示每个组访问的最大值。 例如,如果一个组可以访问priv_access和priv_export,而另一个组可以访问priv_delete。 我希望有一个记录,app_name,priv_access,priv_delete和priv_export都显示Y,其他项目为null或No。

'form_imsi_news', 'Y', '', '', '', 'Y', ''
'form_imsi_news', NULL, NULL, Y, NULL, NULL, NULL

应该是这样的:'form_imsi_news','Y','','Y','','Y',''

请大家非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为您希望按app_name分组结果:

SELECT app_name, max(priv_access), max(priv_insert), max(priv_delete),
       max(priv_update), max(priv_export), max(priv_print)
FROM news_sec_groups_apps 
WHERE group_id IN (SELECT group_id 
                   FROM news_sec_users_groups 
                   WHERE login = 'test2')
group by app_name

我认为这会直接起作用,因为'Y'> 'N'> ''和NULL被忽略。