使用SQL从表中获取数据

时间:2014-04-12 16:22:59

标签: sql sql-server database

我有一个名为"Orders"的表格,其中 1-1000 行和3列(S.noOrderStatus)。我需要从Order获取50-1000,其Status"Cancelled"。我怎样才能在SQL Server中执行此操作?

4 个答案:

答案 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