【问题标题】:How to put condition after table join and ASC and Limit Record in SQL?如何在 SQL 中表连接和 ASC 和限制记录后放置条件?
【发布时间】:2018-05-23 22:30:01
【问题描述】:

我有两个 SQL 表:表 (A) 和表 (B)。表 (A) 匹配表 (B) 中的多个记录。我成功检索记录列表。并使用 Table(B)、'revisionDate' 列进行排序,并且只获取最新记录。

Select  TOP(1) *
from   A
inner JOIN B
    ON  A.id = B.[occasion]
where
    A.id ='136002' and
    A.[prescribedTime] >='2017-12-11 20:00:00.000'
ORDER BY versioningInformation_createdDateTime ASC 

但我只想在表“B”状态列包含 Data as '11' 的情况下获取此记录。

我尝试使用'where子句,例如:where adminState in (11),但我无法成功。

【问题讨论】:

  • 请显示您当前的输出以及您期望的输出。你的问题我不清楚。
  • @Biegeleisen,我当前的输出,返回一条记录..,但实际上,我想返回最新记录,包含'AdminState(11)'。
  • @Biegeleseien ,我真的很想做,选择最新记录,如果'ADMINSTATE'只等于11。这次'AdminStatus'是44。所以,我希望,不要将此记录返回给程序。我不知道这是可能的事情。 ?

标签: sql-server database hibernate join


【解决方案1】:
ON A.id = B.[occasion] AND B.adminState = 11

另外,尝试将其更改为外部连接,我认为这就是您要寻找的。如果没有,您可以添加更多详细信息。

【讨论】:

  • 阿哈德,谢谢你的回答。但在这种情况下返回我不是最新的记录。这次我,返回顶部记录包含 AdminStatus 为 11。但我真的想要,在我选择顶部记录后,如果它包含管理员状态作为选择该记录。有没有办法,那种工作。 ?
  • 尝试将其更改为外连接,不完全确定您在寻找什么,但我认为就是这样
【解决方案2】:

此答案基于您对 Abdul 的回答的评论。

SELECT *
  FROM (Select  TOP(1) *
          from   A
                 inner JOIN B ON  A.id = B.[occasion]
          where
             A.id ='136002' and
             A.[prescribedTime] >='2017-12-11 20:00:00.000'
        ORDER BY versioningInformation_createdDateTime ASC ) g
WHERE g.adminState = 11

【讨论】:

  • 谢谢..,我试试这个,但给出了 SQL 语法错误。 '消息 156,级别 15,状态 1,第 94 行关键字'WHERE'附近的语法不正确。'我使用的是 MSSQL Server 2014。
  • 抱歉,刚刚更正了。忘记为子查询设置别名。
  • 是的,如果这是他正在寻找的东西,那么类似的东西会起作用
  • @AbdulAhad 在这一点上,我不能再帮你了。我不知道你的桌子是什么样子的。但这是一个很容易纠正的错误,您不需要我们在这里做。
  • 是的,可能是那个子表,不知道它是如何工作的
【解决方案3】:
    SELECT * FROM 
(Select TOP(1) A.id,<rest of the cols>
from A inner JOIN B 
ON A.id = B.[occasion] 
where A.id ='136002'
 and A.[prescribedTime] >='2017-12-11 20:00:00.000' 
ORDER BY versioningInformation_createdDateTime ASC ) 
 tab

    WHERE adminState = 11

【讨论】:

  • 谢谢,但 'tab' 字给出错误,'列 'id' 为 'tab' 指定了多次。'
  • 在内部查询中你需要指定你想要的列。由于 id 列在两个表中,所以您会看到该错误
  • 是的,当我将子查询 * 更改为 adminStatus 时,它可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-15
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多