我真的很想不必在我的WHERE语句中重新计算已在列列表中计算过的值。
例如,我必须这样做:
SELECT albumId, fnAlbumGetNumberOfPhotos(album.albumId) AS albumPhotoCount
FROM album
WHERE albumIsActive = 1
AND fnAlbumGetNumberOfPhotos(album.albumId) > 0
但是想知道为什么我不能这样做,或者是否有任何其他解决方法不需要再次调用该函数:
SELECT albumId, fnAlbumGetNumberOfPhotos(album.albumId) AS albumPhotoCount
FROM album
WHERE albumIsActive = 1
AND albumPhotoCount > 0
这是一个更复杂的查询的简化版本,但它说明了这个问题。 当然必须有一种方法来处理这个没有多个函数调用?
非常感谢帮助。感谢
答案 0 :(得分:4)
使用HAVING
。
SELECT albumId, fnAlbumGetNumberOfPhotos(album.albumId) AS albumPhotoCount
FROM album
WHERE albumIsActive = 1
HAVING albumPhotoCount > 0
HAVING
是在SELECT
之后计算的,albumPhotoCount
存在。