我有表A
,B
和C
。现在将A
列作为列A1
(主键),表B
包含列B1
(主键),表C
包含列A1
(表A.A1
的外键),B1
(表B.B1
的外键)。
现在我正在编写一个查询列出A
和B
的所有行以及一个位列,如果在表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
即使查询在合并Subquery returned more than 1 value.
和A1
列后没有重复行,此查询也会产生B1
错误。
答案 0 :(得分:2)
试试这个,
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