我有如下疑问:
SELECT kd.id_karir, kd.nama, kd.kelamin,
(YEAR(NOW())-YEAR(tanggal)) usia, MAX(pf.jenis), pf.jenis,
pf.nama AS pendidikan, pf.jurusan, kd.alamat, kd.telepon,
kd.handphone, kd.email, kd.tempat AS tempat_lahir,
kd.tanggal AS tanggal_lahir
FROM keadaan_diri AS kd
LEFT OUTER JOIN pendidikan_formal AS pf ON (kd.id_karir = pf.id_karir)
WHERE kd.id_karir = 'P1409047'
GROUP BY kd.id_karir
ORDER BY kd.nama ASC, pf.jenis DESC
我的意思是把表上最后的数据还给你 pendidikan_formal
使用max和group,但查询不起作用。
2条答案
按热度按时间kr98yfug1#
首先,您可以/应该(取决于mysql配置)只选择并按列排序,这些列是您的数据库的一部分
group by
条款。对于所有其他列,必须指定聚合函数。例如,假设你有两个人类的记录,都有相同的名字和不同的年龄。按名称分组时,必须从两个年龄值(max、min、average…)中选择一个。如果你不在乎哪个,你可以关闭sql模式only full group by
. 不过,我不建议这样做。然而,为了得到一个具有最大值的记录,分组不是正确的方法。看看这些例子:
子选择:
订货方式及限额:
左连接:
现在,如果您想要每个组的所有最大行数,请使用标签magest-n-per-group检查其中一个答案。
gzszwxb42#
可以使用相关子查询。你的问题有点含糊;我想
id_karir
是组和tanggal
是日期。如果我理解正确,这将适用于您的查询:
这不是聚合查询。这是一个筛选查询。