0

我不知道任何人可以告诉我这些查询是否等效?

SELECT 
TOP 1 (XP.COL1 * XP.COL2) 
FROM XP 
INNER JOIN XZ 
ON XZ = XP 
WHERE XZ = 'ZORD'
ORDER BY XP DESC

SELECT 
MAX(XP.COL1 * XP.COL2)
FROM 
XP,
XZ
WHERE
XZ = XP 
AND XZ = 'ZORD'
4

2 回答 2

2

首先,您应该始终使用正确的JOIN语法。 切勿FROM子句中使用逗号。

但是,这与您的问题无关。

您的查询不相同。特别是,MAX()忽略NULL值,而ORDER BY . . . DESC将它们放在首位。

如果表达式XP.COL1 * XP.COL2never NULL,那么两者是等价的。但是,它们通常并不相同。

于 2020-01-23T03:12:19.087 回答
0

那应该工作

    SELECT (XP.COL1*XP.COL2) as res
    FROM XP INNER JOIN XZ ON XP.col=xz.col
    Where XZ.cols='zord'
    Order by XP.col DESC
    FETCH FIRST 1 ROWS ONLY;







    SELECT max(res) 
    FROM (SELECT (XP.COL1*XP.COL2) as res
    FROM XP INNER JOIN XZ ON XP.col=xz.col
    Where XZ.col='zord') ;
于 2020-01-22T23:36:09.383 回答