只选择第一行 - 与Mysql / SQL Server兼容吗?

时间:2015-11-10 22:38:53

标签: mysql sql-server select

有没有办法创建一个查询来只选择与MySQL和SQL Server兼容的第一个结果?

SELECT TOP 1 mycolumn, mycolumn2
FROM mytable
ORDER BY ID DESC

适用于SQL Server。

但是

SELECT mycolumn, mycolumn2
FROM mytable
ORDER BY ID DESC
LIMIT 1

仅适用于MySQL。

我不打算下载任何PDO或数据库抽象类 - 我想知道SQL查询是否兼容两者?

2 个答案:

答案 0 :(得分:0)

  

是否有办法创建查询以仅选择第一个结果   哪个兼容MySQL和SQL Server?

简短回答,不。

答案很长,不以任何方式有效。其他人建议WHERE id = MAX(id)。如果id是主键,那将会有效。但不是TOP和/或LIMIT功能提供的优化类型。

对不起。

答案 1 :(得分:0)

如果您想获得TOP 1,可以使用max() -- DESCmin() -- ASC。但如果你想得到TOP N,你可以尝试这样的事情:

SELECT mycolumn, mycolumn2
FROM mytable M1
WHERE (SELECT COUNT(*)
       FROM mytable M2
       WHERE M1.ID < M2.ID) < N  -- M1.ID < M2.ID: DESC, < N: TOP N