sql - 只选择第一个结果...有更好的方法吗?

标签 sql sql-server sql-server-2008 t-sql

可以有多个 Config_RecID,但我只想显示附加到 SR_Service_RecID 的第一个,或者当为 null 时显示 NULL。

SELECT s.SR_Service_RecID
     , sc.Config_RecID

  FROM SR_Service s
       LEFT JOIN SR_Config sc
              ON sc.SR_Service_RecID = s.SR_Service_RecID

 WHERE (sc.Config_RecID = 
       (
           SELECT TOP 1 sc.Config_RecID
             FROM SR_Config sc 
            WHERE sc.SR_Service_RecID = s.SR_Service_RecID
       ) 
       OR sc.Config_RecID IS NULL)

有更好/更简洁的方法来做到这一点,还是我走在正确的道路上?

最佳答案

您可以将条件移至 ON 子句中:

SELECT s.SR_Service_RecID
     , sc.Config_RecID
FROM SR_Service s
LEFT JOIN SR_Config sc
     ON sc.SR_Service_RecID = s.SR_Service_RecID
     AND sc.Config_RecID = (
           SELECT TOP 1 Config_RecID
           FROM SR_Config sc2 
           WHERE sc2.SR_Service_RecID = s.SR_Service_RecID
     )

这样您就不需要额外检查 sc.Config_RecID IS NULL

关于sql - 只选择第一个结果...有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14188495/

相关文章:

python - Pandas DataFrame.to_sql() 错误 - 并非所有参数都在字符串格式化期间转换

mysql - 如何使连接根据具有相同条件的列的最小值仅返回一行?

SQL Server 2008。仅当前一个不同时才重复排序

sql - 在 SQL 表的每一行中查找最后一个 NOT NULL 列的值

C# 将 sql datetime 与 null 进行比较

mysql - 将多个结果与条件结合起来

php - SQL 选择多个匹配行

python - SQL 查询结果将日期列报告为字符串,但在获取日期数据类型时遇到问题

sql-server - 如何使用 LTRIM/RTRIM 搜索和替换前导/尾随空格?

sql-server-2008 - TFS 2008 : Does it come with a license for SQL Server 2008?