我要搜索表1并计算 number_id
拥有最多的5分 experience
列。
表1
+-------------+------------+
| number_id | experience |
+-------------+------------+
| 20 | 5 |
| 20 | 5 |
| 19 | 1 |
| 18 | 2 |
| 15 | 3 |
| 13 | 1 |
| 10 | 5 |
+-------------+------------+
所以在这种情况下 number_id=20
然后在表2中做一个内部连接并Map number
符合 number_id
在表1中。
表2
+-------------+------------+
| id | number |
+-------------+------------+
| 20 | 000000000 |
| 29 | 012345678 |
| 19 | 123456789 |
| 18 | 223456789 |
| 15 | 345678910 |
| 13 | 123457898 |
| 10 | 545678910 |
+-------------+------------+
所以结果是:
000000000 (2 results of 5)
545678910 (1 result of 5)
到目前为止,我已经:
SELECT number, experience, number_id, COUNT(*) AS SUM FROM TABLE1
INNER JOIN TABLE2 ON TABLE1.number_id = TABLE2.id
WHERE experience = '5' order by SUM LIMIT 10
但它回来了
545678910
如何让它返回结果,并按经验列中5的示例数的顺序返回?
谢谢
2条答案
按热度按时间pgky5nke1#
添加group by子句:
rks48beu2#
此查询将为您提供所需的结果。子查询获取所有
number_id
那些有experience
值为5。这个SUM(experience=5)
因为mysql使用的值1
为了true
以及0
为了false
. 然后将子查询的结果连接到表2,以给出number
现场。最后,结果是按experience=5
:输出:
sqlfiddle演示