【发布时间】:2013-12-13 03:36:11
【问题描述】:
假设我有这张桌子:
ID|Username|Mood |color
-------------------------
1 |User1 |Sad |red
2 |User1 |Happy |red
3 |User1 |Mad |red
4 |User1 |Scared |green
5 |User1 |Sad |green
6 |User2 |Sad |purple
7 |User2 |Happy |red
8 |User3 |Mad |blue
9 |User4 |Scared |green
10|User4 |Sad |red
在数据库中,我总共有 4 个用户:User1、User2、User3 和 User4。 是否有可以计算特定列中唯一值数量的 SQL 语句? 是否有可以返回这些唯一值的 SQL 语句? 所以它会返回:
ID|Unique_Users
----------------
1 |User1
2 |User2
3 |User3
4 |User4
如果我的所有愿望都能实现,我想更进一步,通过查询用户名和他的心情都是唯一的交集唯一值并得到:
ID|Username|Mood
-----------------
1 |User1 |Sad
2 |User1 |Happy
3 |User1 |Mad
4 |User1 |Scared
6 |User2 |Sad
7 |User2 |Happy
8 |User3 |Mad
9 |User4 |Scared
10|User4 |Sad
(原表中User1在索引1和5中是sad,但在新表中,由于不是唯一的,所以不重复)
注意事项: 1.插入表时不需要检查值是否已经存在,因为每个条目中都有附加信息(不重复) 2.我知道我可以选择所有值,然后处理信息以找出唯一值,并为每个唯一值运行一个新查询以获取其余信息,但这需要使用服务器,我正在努力做到这一点尽可能高效。
【问题讨论】:
-
请格式化问题。作为旁注,在您的“最预期的结果”中,
user2拥有id的id是没有意义的,因为它属于user1。user2应该同时具有6和7。 -
@MostyMostacho,谢谢,没注意到。
标签: sql