选择A列,其中列B = 1

问题描述:

我有这个表平均选择A列,其中列B = 1

enter image description here

我想

select * from table where VhrNum=MIN(VhrNum) and EmptyOrNot=1 

我试过这个查询,但它不工作

的最小值
select * 
from Average 
where Itmnum='1' 
    and VhrNum = (
        select MIN(VhrNum) 
        from (
          select * 
          from Average 
          where EmptyOrNot = '1' 
         ) 
       ) 

在我的情况下,应该选择第三排

+0

请发表的数据作为文本 – TheGameiswar

+0

“它不工作” 是没有问题的描述。什么不起作用?错误?那么错误是什么。意外的结果?那么结果如何? – HoneyBadger

+0

为什么第三排? 'MIN()'返回最小值 - 在你的情况下这是“1”,并且没有数据集,其中'VhrNum = 1'AND'EmptyOrNot ='1'' –

为什么不只是采取top 1行和order by的列?

SELECT TOP 1 * 
FROM [table] 
WHERE EmptyOrNot=1 
ORDER BY VhrNum 
+1

这对我来说是完美的 尽管我没有问好我的问题,但你得到它 非常感谢你 –

你可以尝试这样的

SELECT MIN(VhrNum) FROM table_name where EmptyOrNot=1; 
+0

这是工作,如果我只想VhrNum列值,但我需要所有列 并感谢帮助:) –

使用TOP 1ORDER BY

select Top 1 * from table where EmptyOrNot=1 
Order by VhrNum ASC 

如果超过一个纪录分钟VhrNum价值,并且希望所有的领带记录,然后使用TOP 1 WITH TIES

select Top 1 With Ties * from table where EmptyOrNot=1 
Order by VhrNum ASC 

聚合函数需要一个GROUP BY - 或者你可以ORDER BY并选择第一个。

Aggregate不会让你做一个SELECT *,这实际上并不是很好的做法,总的来说,你确实试图得到这个MINTOP 1/ORDER BY会让你做一个SELECT *,但可能不太清楚,你真正想要得到的是MIN(VhrNum)

总结:

SELECT MIN(VhrNum) 
FROM Average 
WHERE EmptyOrNot = 1 
GROUP BY EmptyOrNot 

上:

SELECT TOP(1) VhrNum, * 
FROM Average 
WHERE EmptyOrNot = 1 
ORDER BY VhrNum ASC 

你可以试试这个:

select top 1 * from table where VhrNum= (select min(VhrNum) from table); 
+1

沿着这条线已经给出了更好的答案,没有'order by'的'top'给出非确定性结果。你也缺少'emptyOrNot'和'Itmnum'标准 – HoneyBadger