表T1
:
ID|r1|r2|r3
-|-|
ID1|r1_d1|r2_d1|r3_d1
ID2|r1_d2|r2_d2|r3_d2
ID3|r1_d3|r2_d2|r3_d3
Id4|r1_d4|r2_d4|r3_d4
表T2
:
ID|K_r1|K2
-|-|
Id1|r1_d1|k2_d1
Id2|r1_d3|k2_d2
ID3|r1_d4|k2_d4
我需要第一个表的一些属性和一个额外的结果,表明是否T1.R1 == T2.K_R1
:
ID|R1|R2|P1
-|-|
ID1|r1_d1|r2_d1|TRUE
Id2|R1_D2|R2_D2|FALSE
ID3|r1_d3|r2_d2|true
Id4|r1_d4|r2_d4|TRUELEFT JOIN
将返回T1
的所有条目和匹配的T2
条目,但也将具有T2
的所有属性,这是不需要的。如何(也考虑到性能)排除不必要的属性并生成布尔值--而不是实际值?
2条答案
按热度按时间wrrgggsh1#
您可以按如下方式使用
EXISTS
运算符:请参见demo。
ar5n3qh52#
连接本身不“返回”任何内容,所以我不会担心可以返回的列数。您可以在
SELECT
子句中准确地放入您想要的内容。您可以使用
CASE
语句返回TRUE或FALSE。也许是这样的:
或
这些选项假定T2中最多有一条匹配的记录。如果不是这样,您可能希望在
SELECT
中使用GROUP BY
(带有JOIN
),或者在SELECT
中使用EXISTS
(没有JOIN
)。本例中的MAX
应该可以工作,因为“true”按字母顺序大于“False”,如果至少有一个“true”,您希望返回“true”。