Mysql 如果使用计数,则“订单依据”不起作用
我有一张有以下内容的桌子Mysql 如果使用计数,则“订单依据”不起作用,mysql,count,sql-order-by,Mysql,Count,Sql Order By,我有一张有以下内容的桌子 loan_application +----+---------+ | id | user_id | +----+---------+ | 1 | 10 | | 2 | 10 | | 3 | 10 | +----+---------+ 我只想在有3条记录可用的情况下获取第3条记录,在这种情况下,我需要id 3,总计数必须为3,这是我所期望的 +--------------+----+ | COUNT(la.id) | id | +-
loan_application
+----+---------+
| id | user_id |
+----+---------+
| 1 | 10 |
| 2 | 10 |
| 3 | 10 |
+----+---------+
我只想在有3条记录可用的情况下获取第3条记录,在这种情况下,我需要id 3,总计数必须为3,这是我所期望的
+--------------+----+
| COUNT(la.id) | id |
+--------------+----+
| 3 | 3 |
+--------------+----+
这是我尝试过的问题
SELECT COUNT(la.id), la.id FROM loan_application la HAVING COUNT(la.id) = 3 ORDER BY la.id DESC;
然而,这给了我以下的结果
+--------------+----+
| COUNT(la.id) | id |
+--------------+----+
| 3 | 1 |
+--------------+----+
问题是,即使我使用按id降序,它也会返回id 1,而我希望id的值为3,我哪里出错了
谢谢。在您的情况下,您可以使用此查询:
SELECT COUNT(la.id), max(la.id) FROM loan_application la
GROUP BY user_id
我在my dbMySQL中尝试您的表,您正在选择la.id以及聚合函数(COUNT)。因此,在迭代第一条记录之后,选择了la.id,但计数继续进行。因此,在本例中,您将获得第一个la.id而不是最后一个。要获取最后一个la.id,需要在该字段上使用max函数 以下是更新后的查询:
SELECT
COUNT(la.id),
MAX(la.id)
FROM
loan_application la
GROUP BY user_id
HAVING
COUNT(la.id) = 3
N:B:您使用的是不带GROUP BY函数的COUNT。因此,这个特定的聚合函数将应用于整个表。当select列表中有一个group by函数(在本例中为count())而没有group by子句时,mysql将只返回一条记录,该函数将应用于整个表 某些配置设置下的Mysql允许您在select loist中包含不在group by子句中的字段,也不允许聚合这些字段。Mysql在扫描数据时几乎会将遇到的第一个值作为此类字段的值,在您的示例中,是id的值1 如果要获取id=表中记录计数的记录,则我将使用以下查询:
select *
from loan_application
join (select count(*) as numrows from loan_application) t
where id=t.numrows and t.numrows=3
但是,这意味着id字段中的值是连续的,没有间隙。谢谢:-)这很有帮助。如果需要,也要谢谢你@Ibrahimazharmar你可以在这个查询中添加你的
计数(*)