【问题标题】:SQL Server subquery in cross join returns error交叉连接中的 SQL Server 子查询返回错误
【发布时间】:2012-10-27 03:54:33
【问题描述】:

我有表 ABC。现在表A作为列A1(主键),表B有列B1(主键)和表C有列A1(表的外键A.A1),@987654331 @(表的外键B.B1)。

现在我正在编写一个查询,其中列出了来自 AB 的所有行以及一个位列,如果在表 C 中找到匹配的行,则该位列将设置为 1,否则为 0。

SELECT 
     ISNULL((SELECT CAST(1 AS BIT) 
             FROM C 
             WHERE C.A1 = A.A1 AND C.B1 = B.B1),0) AS [TAG],
     A.A1,
     B.B1
FROM A CROSS JOIN B

即使在组合 A1B1 列后查询没有重复行,此查询也会产生 Subquery returned more than 1 value. 错误。

【问题讨论】:

  • 单独发布子查询的结果

标签: sql sql-server-2008 tsql subquery cross-join


【解决方案1】:

试试这个,

SELECT  CAST(COALESCE(c.b1, 0) AS BIT)   TAG
FROM
        (
            SELECT  A1, B1
            FROM    A CROSS JOIN B
        ) D LEFT JOIN C
                ON  c.A1 = d.A1 AND
                    c.B1 = D.B1

【讨论】:

  • A1B1varchar。检查C表中的存在后,我必须在查询中动态创建位列。
  • 太棒了。按预期工作。
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
相关资源
最近更新 更多