Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何更正我的SQL语句?_Mysql - Fatal编程技术网

Mysql 如何更正我的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

我有以下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_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
我尝试在中使用where
pgdd1.DT_仓库(与第一个选择相同,但具有限制1)
但我的SQL server说他不支持内部选择中的限制

以下是我第一次查询的结果:

我只需要所有行中的第一个(DT_最后一个值)


我的最终目标是选择group by元素的第一组行,在这种情况下,是DT相同的前2行。

我不使用限制2,因为长度是通过代码动态发送的,它会发生变化。我使用了5,因为这种情况需要更正如果要使用像
first
这样的聚合函数,您需要使用
GROUP BY
子句使其有意义。否则“首先是什么?”@dan08我很难解释,但假设您在选择中使用了order by(例如性别),那么您只需要选择第一组(例如女性)如何操作?因此,如果几行有一个共同的字段,您可以按该字段分组,然后按您希望与该组一起排序的字段排序,然后使用第一个聚合函数。或者在WHERE
WHERE pgdd.id=(选择LIMIT 1)中使用类似的函数
我不使用limit 2,因为长度是由代码动态发送的,它会发生变化。我使用了5,因为这种情况需要更正。如果要使用像
FIRST
这样的聚合函数,则需要使用
GROUP by
子句才能使其有意义。否则“首先是什么?”@dan08我很难解释,但假设您在选择中使用了order by(例如性别),那么您只需要选择第一组(例如女性)如何操作?因此,如果几行有一个共同的字段,您可以按该字段分组,然后按您希望与该组一起排序的字段排序,然后使用第一个聚合函数。或者在WHERE
WHERE pgdd.id=(选择LIMIT 1)