查询的t.real_name字段,不在group by的字段中
SQL:
select max(case when 1=1 then t.real_name end),t.user_id from lus_user t group by t.user_id
结果:
1 建华 825899
2 江涛 121823
3 争平 121944
使用group by 时,select 涉及的列要么是参与分组的列,要么列包含在聚合函数中
where将对分组前的所有数据进行筛选。having将对分组后的一组数据搞事情。
例如:
select a,b,avg(c),sum(d) from 表 group by a,b
select非group by的字段
可以把group by的结果集当作一个表,然后从这里表里取数就可以了
例如:查询,订单表中订单号重复的订单信息,分组字段是orderno,select的信息不仅有orderno,还有其他信息
SELECT
p.id,
p.orgcode,
p.idserial,
p.username,
p.orderno,
p.createtime,
p.payflag,
p.businessorderno,
p.paytime
FROM
pay_order_trade p,
(
SELECT
orderno,
count(*) 重复次数
FROM
pay_order_trade
GROUP BY
orderno
HAVING
count(1) > 1
) s
WHERE
s.orderno = p.orderno
ORDER BY
p.orderno DESC;