我有以下代码。 我需要做的是当我从数据库中获取记录时,我只需要我的下一个过程的最高记录。 我曾尝试使用LIMIT,TOP等,但与所有数据库不兼容。 在这种情况下,任何帮助表示赞赏。 下面是查询从查询结果中为所有数据库提取最高记录
SELECT a,b,c,d,COUNT(*) AS cnt_next
FROM table
WHERE emp_cd='ASDF1234' and a < '01/08/2017'
GROUP BY a,b,c,d
ORDER BY b
DESC
我有以下代码。 我需要做的是当我从数据库中获取记录时,我只需要我的下一个过程的最高记录。 我曾尝试使用LIMIT,TOP等,但与所有数据库不兼容。 在这种情况下,任何帮助表示赞赏。 下面是查询从查询结果中为所有数据库提取最高记录
SELECT a,b,c,d,COUNT(*) AS cnt_next
FROM table
WHERE emp_cd='ASDF1234' and a < '01/08/2017'
GROUP BY a,b,c,d
ORDER BY b
DESC
SQL Server 2012中使用 “OFFSET 1个ROWS FETCH NEXT 1行仅对”。不知道这是否会帮助,但值得一试!
我目前使用2个数据库。这种方法只适用于一种 – prajakta
RDBMS之间有许多不同之处,所以对于一个与所有数据库兼容的查询来说是不可能的。 如果您使用的是Mysql和Postgresql,则此查询可以在这两个RDBMS上运行。
SELECT *
FROM
(SELECT a,b,c,d,COUNT(*) AS cnt_next
FROM table
WHERE emp_cd='ASDF1234' and a < '01/08/2017'
GROUP BY a,b,c,d
ORDER BY b DESC) data
LIMIT 1
其它RDBMS,你会发现在这个link
没有的某种抽象级别的更多信息,你就把自己一个几乎不可能完成的任务。我怀疑你的当前查询在任何RDBMS中都是有效的! – Strawberry
RDBMS口味之间有许多不同之处,它们都是由不同制造商以不同议程开发的不同步骤。编写适用于所有RDBMS的通用SQL代码几乎是不可能的。 –