[英]Sum query for MySQL where field contain certain values
我需要查询的帮助,我有一个这样的表:
| ID | codehwos |
| --- | ----------- |
| 1 | 16,17,15,26 |
| 2 | 15,32,12,23 |
| 3 | 53,15,21,26 |
我需要这样的支出:
| codehwos | number_of_this_code |
| -------- | ---------------------- |
| 15 | 3 |
| 17 | 1 |
| 26 | 2 |
我想一直汇总一行中使用代码的所有时间。
任何人都可以一次查询所有代码吗? 谢谢
您的数据格式很差。 您不应该将列表存储在字符串中,也不要将数字列表存储在字符串中。 SQL具有用于存储列表的良好数据结构。 提示:它被称为“表”而不是“字符串”。
就是说,有时人们会被别人真正糟糕的设计选择所束缚。 我们不会自己制造它们,但是我们仍然需要完成一些工作。 假设您具有代码列表,则可以执行以下操作:
select c.code, count(*)
from codes c join
table t
on find_in_set(c.code, t.codehwos) > 0
group by c.code;
如果您对数据结构有任何影响,请倡导连接表,这是将数据存储在关系数据库中的正确方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.