【发布时间】:2020-08-19 02:46:42
【问题描述】:
我有表格(notes_subject)结构 -
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| user_id | int | NO | | NULL | |
| note_id | varchar(25) | NO | MUL | NULL | |
| subject_name | text | NO | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
以及存储在此表中的数据 -
+----+---------+--------------+--------------+
| id | user_id | note_id | subject_name |
+----+---------+--------------+--------------+
| 10 | 2 | UdMs870BSswp | CN |
| 12 | 2 | 8stMvslwIGr2 | CN |
| 13 | 2 | PB3KNbbFkaUm | cn |
+----+---------+--------------+--------------+
注意:CN 和 cn(小写)不同。
我想通过user_id 来统计每个subject_name 在此表中的出现次数。所以我运行查询 -
SELECT subject_name, COUNT(subject_name)
FROM notes_subject where user_id=2 GROUP BY subject_name;
它成功了 -
+--------------+---------------------+
| subject_name | COUNT(subject_name) |
+--------------+---------------------+
| CN | 3 |
+--------------+---------------------+
但这不是正确的结果,因为 CN 和 cn 不同。
我还想要结果中的 id、user_id、note_id。
【问题讨论】:
-
这可能与排序规则有关。我建议搜索类似How to do a case sensitive GROUP BY? 的内容。但这个问题是特定于 SQL Server 的,因此可能会因您的数据库而异。
-
@HernánAlarcón 我试过这个查询 -
SELECT subject_name, COUNT(subject_name) FROM notes_subject GROUP BY subject_name COLLATE SQL_Latin1_General_CP1_CS_AS但它给出了错误 -
@HernánAlarcón
Unknown collation发生错误,我在您共享的链接中看到了已接受的答案。他正在为每一行手动提供所有值。 -
@carljohnson 你的数据库是什么? SQL 是一种语言
标签: mysql sql case-sensitive