我有一个名为"Orders"
的表格,其中 1-1000 行和3列(S.no
,Order
和Status
)。我需要从Order
获取50-1000
,其Status
为"Cancelled"
。我怎样才能在SQL Server中执行此操作?
答案 0 :(得分:3)
逻辑运算符:
SELECT Order
FROM Orders
WHERE Status = 'Cancelled'
AND (S.no > 50 AND S.no < 1000)
BETWEEN
:
SELECT Order
FROM Orders
WHERE Status = 'Cancelled'
AND (S.no BETWEEN 50 and 1000)
答案 1 :(得分:2)
您可以尝试这样的事情:
SELECT *
FROM Orders
WHERE (S.no BETWEEN 50 AND 1000) AND (Status = 'Cancelled')
希望这有帮助
答案 2 :(得分:2)
select *
from orders
where no between 50 and 1000
and status = 'Cancelled'
假设您打算说该列名为“no”。 S.no不是有效的列名。
答案 3 :(得分:0)
如果你正在使用SQL Server,你就无法访问限制和抵消(除非在过去一年左右发生了变化,在这种情况下请有人纠正我)。< / p>
这里讨论了一个非常好的可推广解决方案:Equivalent of LIMIT and OFFSET for SQL Server?
我一定要看看。如果你的s_no值确实在1-1000之间,那么Notulysses上面的解决方案应该可以正常工作。但是如果你没有1-1000之间的so_no(或其他一些易于过滤的方式),那么请查看上面链接的解决方案。如果你能推荐Notulysses,那就去吧。如果您需要一个通用的解决方案,上面的解决方案非常好。我也在下面复制了它,以供参考
;WITH Results_CTE AS
(
SELECT
Col1, Col2, ...,
ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
FROM Table
WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit