目标:查找所有行,其中(1)数字的消息数为1,(2)消息的长度小于5个字符。我可以单独执行每个操作,但是当我在一个SQL查询中组合这两个条件时会遇到困难。
Sample Database Table:
+-----+----------+----------+
| id | number | message |
+-----+----------+----------+
| 1 | 100 | Test |
| 2 | 100 | Testing |
| 3 | 100 | Testing |
| 4 | 200 | Test |
| 5 | 201 | Test |
| 6 | 201 | Test |
| 7 | 250 | Testing |
| 8 | 251 | Test |
| 9 | 300 | Testing |
| 10 | 300 | Testing |
+-----+----------+----------+
应该只返回行200和251.尝试以下操作,但没有运气:
SELECT * FROM `reports` WHERE LENGTH(message) < 5 GROUP BY number HAVING count(*) = '1'
返回行,但行包含计数&gt; 1。
答案 0 :(得分:1)
好的,几个小时前我做了错误的改动 - 这次我的数据就像你的一样。啊,现在我看到你遇到了什么问题。你不明白MySQL解释你的SELECT的顺序;它首先在WHERE中限制结果,然后它执行GROUP BY。按设计工作。