【问题标题】:SQL Script Help, combine two queries into oneSQL 脚本帮助,将两个查询合二为一
【发布时间】:2010-06-29 18:49:22
【问题描述】:

我想知道这两个查询是否可以合并为一个查询?

查询 1:将 @guidID 插入到查询 2:

DECLARE @guidID uniqueIdentifier
    SET @guidID = (SELECT guidID FROM dbo.table1 WHERE IntID = 1) 

查询 2:从函数和 table1 中检索组合表

SELECT o.guidID, IntID, Title, func.Name 
  FROM dbo.table1 o
 INNER JOIN dbo.func1(o.guidID) func ON func.guidID = o.guidID
 WHERE IntID = 1

func1 接受一个 guidID 对象 返回 (guidID, IntID

的表

感谢您的帮助,这是我所得到的,它为我提供了我需要的数据,但在两个单独的查询中。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    SQL Server 2005+ 已交叉应用

    SELECT t.guidID, IntID, Title, func.Name 
      FROM
         dbo.table1 o
         CROSS APPLY
         dbo.func1(o.guidID) func
     WHERE IntID = 1
    

    编辑:行不通... 但是,假设您有一行 IntID = 1,您还可以交叉连接其他 DBMS/较旧的 SQL Server

    SELECT t.guidID, IntID, Title, func.Name 
      FROM
         dbo.table1 o
        CROSS JOIN
        dbo.func1(o.guidID) func
     WHERE IntID = 1
    

    【讨论】:

    • 我收到一个错误:“'.' 附近的语法不正确。”对于第 5 行的 (o.guidID)。有什么建议吗?我一直在研究它,但似乎无法解决问题。
    • 啊。您使用的是 SQL Server 2000,或者您的 db compat 级别为 80(或更低)。请使用我给的第二个表格
    • 我在 SQL Server 2008 上,我不确定 db compat 级别是什么,因为谷歌搜索并没有告诉我太多。但是当我尝试运行第二种形式时,我得到了同样的错误。
    • stackoverflow.com/questions/1501596/… 我的第二种形式是错误的,对不起
    • 好吧,我会继续玩 CROSS APPLY,因为我读到的所有关于它的内容似乎都指向这个应用程序。如果您对如何使我的脚本正常工作有任何其他想法,请告诉我!感谢您迄今为止的帮助。
    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多