【问题标题】:Displaying Certain Row of Query Results显示某行查询结果
【发布时间】:2013-12-06 17:05:00
【问题描述】:

所以当我运行这个查询时,我会得到 6 个数据结果

Select Title
From products.features
where productid = '172'

这是数据:

  1. 312-109
  2. UL 额定 94V-O,黑色,10% 玻璃填充 6 尼龙,符合 ASTM D4066 PA210G11
  3. 改善 PCB 和系统冷却
  4. 支持任何间距、任何长度和任何 PCB 厚度

我只想在结果中显示第二行..

UL 额定 94V-O,黑色,10% 玻璃填充 6 尼龙,符合 ASTM D4066 PA210G11

【问题讨论】:

  • 第二行什么顺序?
  • 你需要定义一个顺序,否则SQL Server怎么知道你想要哪个top 5,“2nd”是什么意思?想象一下,我把一袋弹珠掉在地板上,然后你走进房间。你能告诉我哪颗大理石第二次落到地板上吗?
  • 6 行,前 5 行?如果您无法直接了解详细信息,您如何期望得到有用的答案?另外“我不能使用where子句”是什么意思?为什么不呢?
  • 我不确定这可以说得更清楚。如果您需要第二行每次都相同,那么我必须重复必须使用 order by 子句来确定结果的顺序。
  • 浪费了人们的时间,真是太可悲了

标签: sql sql-server sql-server-2008-r2


【解决方案1】:

我假设您尝试按标题订购

select Top 1 Title
from (
   Select Top 2 Title
   From products.features
   where productid = '172'
   order by Title asc
) a
order by Title desc

您一直遗漏的是 Order By。如果您没有订单... 您的结果将无法保证每次运行。有点随机。

【讨论】:

  • select top 1 from (Select Title From products.features where productid = '172') order by ID desc 给出错误
  • 您只是复制粘贴了吗?我发布的只是概念性的……您必须填写一些空白。 头痛
  • 我重新编辑了问题,我认为我没有正确解释。
  • 感谢您的帮助,我现在明白我需要按条款订购!
【解决方案2】:
with cte as
(
    Select TOP 5 Title, Title_Row = ROW_NUMBER() OVER (ORDER BY Title asc)
    From products.features
    Where productid = '172'
)
Select *
From cte
Where Title_Row = 2
Order by Title

编辑,添加按标题排序。

【讨论】:

  • 这成功了!感谢您理解我写得不好的问题!我刚刚将 ORDER BY Title 更改为 ID,它按我想要的方式工作,谢谢 :)
  • @user3014698 哦,原来是按ID排序的!天才!下次您可能想提及 有一个列可以用来确定顺序以及 2nd 的含义。不知道这导致你的问题有多少愚蠢的cmets???
  • 这个答案有一个TOP 5(在cte中)没有ORDER BY,所以它可能是错误的。请添加ORDER BY Title或删除TOP 5
猜你喜欢
  • 1970-01-01
  • 2012-09-20
  • 2013-01-31
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
相关资源
最近更新 更多