基本上,我正在尝试对仅包含图像的页面进行查询。我需要提供 tripID 号,然后提供 ROWID(因为可能有多个图像)才能接收单个图像。我将循环直到每个图像都位于 html 中相应的图像框中。
这段代码似乎不起作用(我得到无效的列名'ROWID'),但是如果我删除AND ROWID='1',它会返回所有图像及其行ID,如下所示:
ROWID PHOTO
1 32jjr3h2jh23hj4h32jh42ll23j42
2 HU8308DJAOID9ASIDJI32C89EE29
-
Select ROW_NUMBER() OVER (ORDER BY Photo ASC) AS ROWID, TBL_Photo.Photo
From TBL_Photo
left join TBL_TripDetails
ON TBL_Photo.TripID=TBL_TripDetails.pkiTripID
Where pkiTripID = '121' AND ROWID = '1'
最佳答案
您不能在 WHERE 子句中引用列别名 - 您需要使用子查询或 CTE:
子查询示例:
SELECT x.rowid,
x.photo
FROM (SELECT ROW_NUMBER() OVER (ORDER BY p.photo) AS ROWID,
p.photo
FROM TBL_PHOTO p
LEFT JOIN TBL_TRIPDETAILS td ON td.pkitripid = p.tripid
WHERE td.pkiTripID = '121') x
WHERE x.rowid = 1
CTE 示例:
WITH example AS (
SELECT ROW_NUMBER() OVER (ORDER BY p.photo) AS ROWID,
p.photo
FROM TBL_PHOTO p
LEFT JOIN TBL_TRIPDETAILS td ON td.pkitripid = p.tripid
WHERE td.pkiTripID = '121')
SELECT x.rowid,
x.photo
FROM example x
WHERE x.rowid = 1
性能
这两个选项之间没有性能差异,但并非所有数据库都支持WITH 语法。
关于基于 ROW_Number 的 SQL 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4218367/