在SQL Server 2012中,我有两个表,一个名为carthead
,另一个名为cartrows
。每个表大概是10k行。我在两个表中都有标识列,idorder
是carthead
中的标识列,而idrow
是cartrows
中的标识列(尽管我似乎不需要使用这个,我想,但我把它包括在这里,所以你有背景)。
我正在尝试找到最新(或最后输入的)idorder
号码(同样是一个标识列),其中产品#= 97且imgexists为True(如果我们有一个标志,那么它就是一个标志它的形象)。
此查询运行:
SELECT TOP 1 cr.idorder
FROM cartrows cr, carthead ch
WHERE cr.idproduct = 97
AND ch.imgexists IS NOT NULL
ORDER BY cr.idorder DESC
然而,答案为最新行吐出了一个数字,其中idproduct = 97但未考虑ch.imgexists不为空(我尝试过其他变体,包括<>'',不是假的,等结果相同)。
我开始寻找这个帖子: (How to read the last row with SQL Server)并且只是想我可以添加条件以满足我的需求,但显然我做错了..
有什么想法?非常感谢来自德克萨斯州奥斯汀的所有人。
答案 0 :(得分:1)
您需要一个连接条件来限制返回的行...类似于
SELECT top 1
cr.idorder
FROM
cartrows cr
INNER JOIN
carthead ch on
ch.idproduct = cr.idproduct --or what ever the tables are related by...
WHERE
cr.idproduct = 97
and ch.imgexists is not null
ORDER BY
cr.idorder DESC
答案 1 :(得分:0)
SELECT top 1
cr.idorder
FROM
cartrows cr
INNER JOIN
carthead ch on
ch.idorder = cr.idorder
WHERE
cr.idproduct = 97
and ch.imgexists is not null
ORDER BY
cr.idorder DESC
工作..; - )