我正在使用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