0

好的,最近几天可能要花好几个小时,但我无法解决这个问题。

我有这张桌子:

通过这个查询,我试图找到所有status最新artikel_inh_iddate

SELECT
MAX(stat.datum) AS date,
stat.artikel_inh_id AS artikel_inh_id,
stat.status AS status
FROM verh_artikel_ihn AS art
LEFT JOIN verh_artikel_status AS stat
ON stat.artikel_inh_id = art.id
WHERE art.artikel_id = ".$row_table_2['id']."
GROUP BY stat.artikel_inh_id

出于某种原因,所有结果都给出了,status = Beheerder尽管显示了最后date的结果。有什么建议么?

4

1 回答 1

0

好像您错过了在分组依据中添加“状态”列。当您在选择任何 SQL 查询以及其他列时具有聚合函数时,您需要按未进行聚合的所有列进行分组。

在 Mysql 中,group by 中缺少的列不被视为错误,而是为您提供它在其聚合的所有行中遇到的列的第一个值。这就是你得到上述结果的原因。

这是相同的文档:https ://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html

这也可能有帮助:https ://www.w3schools.com/sql/sql_groupby.asp

于 2020-07-22T17:45:00.987 回答