从MS SQL Server 2012中的另一个表获取具有条件的最新行

时间:2018-04-17 17:18:17

标签: sql-server

在SQL Server 2012中,我有两个表,一个名为carthead,另一个名为cartrows。每个表大概是10k行。我在两个表中都有标识列,idordercarthead中的标识列,而idrowcartrows中的标识列(尽管我似乎不需要使用这个,我想,但我把它包括在这里,所以你有背景)。

我正在尝试找到最新(或最后输入的)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)并且只是想我可以添加条件以满足我的需求,但显然我做错了..

有什么想法?非常感谢来自德克萨斯州奥斯汀的所有人。

2 个答案:

答案 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 

另外,我会选择look at this post regarding your joins

答案 1 :(得分:0)

@scsimon在这里有正确的答案,我需要做更多关于JOINS的研究;谢谢你们所有的帮助..

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

工作..; - )