Mysql 如何更正我的SQL语句?
我有以下SQL语句:Mysql 如何更正我的SQL语句?,mysql,Mysql,我有以下SQL语句: SELECT pgdd1.DT_DEPOT AS DT_LAST,pgdd.DT_DEPOT AS DT, pgdd.ETAT AS ETAT, pgtd.NOM_DOCUMENT AS NOM_DOCUMENT FROM pg_detachements_documents pgdd LEFT JOIN pg_types_documents pgtd ON pgtd.ID=pgdd.ID_DOCUMENT LEFT JOIN pg_detachements_docume
SELECT pgdd1.DT_DEPOT AS DT_LAST,pgdd.DT_DEPOT AS DT, pgdd.ETAT AS ETAT, pgtd.NOM_DOCUMENT AS NOM_DOCUMENT
FROM pg_detachements_documents pgdd
LEFT JOIN pg_types_documents pgtd ON pgtd.ID=pgdd.ID_DOCUMENT
LEFT JOIN pg_detachements_documents pgdd1 on pgdd1.ID = pgdd.ID
WHERE pgdd.ID_DETACHEMENT = 4
ORDER BY pgdd.ID
DESC
LIMIT 5
这个很好,但是当我试图只显示dtu LAST的第一行时,我得到了一个SQL语法错误
我试着这样做:
SELECT FIRST(pgdd1.DT_DEPOT) AS DT_LAST,pgdd.DT_DEPOT as DT, pgdd.ETAT AS ETAT, pgtd.NOM_DOCUMENT AS NOM_DOCUMENT
FROM pg_detachements_documents pgdd
LEFT JOIN pg_types_documents pgtd ON pgtd.ID=pgdd.ID_DOCUMENT
LEFT JOIN pg_detachements_documents pgdd1 on pgdd1.ID = pgdd.ID
WHERE pgdd.ID_DETACHEMENT = 4 and pgdd1.DT_DEPOT = pgdd.DT_DEPOT
ORDER BY pgdd.ID
DESC
LIMIT 5
我尝试在中使用wherepgdd1.DT_仓库(与第一个选择相同,但具有限制1)
但我的SQL server说他不支持内部选择中的限制
以下是我第一次查询的结果:
我只需要所有行中的第一个(DT_最后一个值)
我的最终目标是选择group by元素的第一组行,在这种情况下,是DT相同的前2行。我不使用限制2,因为长度是通过代码动态发送的,它会发生变化。我使用了5,因为这种情况需要更正如果要使用像
first
这样的聚合函数,您需要使用GROUP BY
子句使其有意义。否则“首先是什么?”@dan08我很难解释,但假设您在选择中使用了order by(例如性别),那么您只需要选择第一组(例如女性)如何操作?因此,如果几行有一个共同的字段,您可以按该字段分组,然后按您希望与该组一起排序的字段排序,然后使用第一个聚合函数。或者在WHEREWHERE pgdd.id=(选择LIMIT 1)中使用类似的函数
我不使用limit 2,因为长度是由代码动态发送的,它会发生变化。我使用了5,因为这种情况需要更正。如果要使用像FIRST
这样的聚合函数,则需要使用GROUP by
子句才能使其有意义。否则“首先是什么?”@dan08我很难解释,但假设您在选择中使用了order by(例如性别),那么您只需要选择第一组(例如女性)如何操作?因此,如果几行有一个共同的字段,您可以按该字段分组,然后按您希望与该组一起排序的字段排序,然后使用第一个聚合函数。或者在WHEREWHERE pgdd.id=(选择LIMIT 1)