2016-11-22 138 views
0

我有這個表平均選擇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'' –

回答

3

爲什麼不只是採取top 1行和order by的列?

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

這對我來說是完美的 儘管我沒有問好我的問題,但你得到它 非常感謝你 –

0

你可以嘗試這樣的

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

這是工作,如果我只想VhrNum列值,但我需要所有列 並感謝幫助:) –

2

使用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 
0

聚合函數需要一個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 
0

你可以試試這個:

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

沿着這條線已經給出了更好的答案,沒有'order by'的'top'給出非確定性結果。你也缺少'emptyOrNot'和'Itmnum'標準 – HoneyBadger

相關問題