我正在使用SQL Server 2008.我有一個由三列組成的表格,ID爲字符串類型,createtime爲DataTime類型,狀態爲int。如何編寫select這樣的語句?
我想在狀態值爲10的所有記錄中選擇記錄,同時createtime是最愛的。任何想法如何寫這樣的查詢?
BTW:ID是聚簇索引,我也有createtime列的索引。
由於事先 喬治
我正在使用SQL Server 2008.我有一個由三列組成的表格,ID爲字符串類型,createtime爲DataTime類型,狀態爲int。如何編寫select這樣的語句?
我想在狀態值爲10的所有記錄中選擇記錄,同時createtime是最愛的。任何想法如何寫這樣的查詢?
BTW:ID是聚簇索引,我也有createtime列的索引。
由於事先 喬治
SELECT TOP 1 *
FROM table
WHERE status = 10
ORDER BY created
select top 1 ID,
CreateTime,
Status
from SourceTable
where Status = 10
order by CreateTime
SELECT
TOP 1 * FROM table WHERE VALUE = 10
ORDER BY createtime
SELECT TOP 1 id, createtime, status
FROM mytable
WHERE status = 10
ORDER BY
createtime
這個怎麼樣?
;WITH OrderedRows
AS
(SELECT ID, CreateTime, Status, ROW_NUMBER() OVER (ORDER BY CreateTime ASC) AS RowNumber
FROM MyTable
WHERE Status = 10)
SELECT * FROM OrderedRows
WHERE RowNumber = 1
我不熟悉SQL Server中,具體地講,但你應該能夠有一個子查詢做到這一點:
SELECT *
FROM Table t1
WHERE status = 10 AND createtime = (
SELECT min(createtime)
FROM Table t2
WHERE status = 10
);
我喜歡阿爾揚的答案,但如果你有更多的條件與「最早創建的行「部分的選擇,然後我會看看子查詢,例如
SELECT *
FROM table
WHERE status = 10
AND created = (SELECT MIN(created)
FROM table
WHERE status = 10))
雖然這基本上是跑2個查詢,是聯合國需要爲您的要求,它給你,如果你有更多的條件與工作的更多的控制。
HTH
ONESHOT
是一個很好的經驗法則,從來不使用*(全部)......始終指定的字段 – balexandre 2009-06-25 13:07:46
@balexandre:你說得對......我知道...: ) – 2009-06-25 13:09:18
對於那些懶得寫出所有字段的人,讓寫語句從表中選擇*然後標記文本並右鍵單擊「編輯器中的設計查詢」後,只需單擊確定,Visual Studio將列舉所有選中的字段的名稱聲明 – adopilot 2009-06-25 13:14:16