我有两个表,表A和表B.
Col1
----------
one.1.1
two.2.2
three.2.2
one.1
one.3
| Col1 | Col2 | Col3 |
+----------------------+
| one | 1 | 1 |
| two | 2 | 2 |
| three | 2 | 1 |
| three | 2 | 2 |
我想要一个左连接,它显示表A中但不在表B中的值。 我需要连接表B列,它们可以是格式“Col1.Col2”或“Col1.Col2.Col3”
这是我的疑问:
SELECT Col1
FROM TableA AS A
LEFT JOIN TableB AS B ON A.Col1 = B.Col1+'.'+B.Col2+'.'+B.Col3
WHERE A.Col1 IS NOT NULL
AND B.Col1+'.'+B.Col2+'.'+B.Col3 IS NULL
答案 0 :(得分:0)
如果你使用左连接表的列在哪里条件这作为一个内连接..保持条件在on子句
在您的情况下,您需要不匹配的行只使用它们
SELECT Col1 FROM TableA AS A
LEFT JOIN TableB as B ON A.Col1 = B.Col1+'.'+B.Col2+'.'+B.Col3
WHERE B.Col1+'.'+B.Col2+'.'+B.Col3 IS NULL
答案 1 :(得分:0)
此MySQL查询(SQLFiddle)将执行您想要的操作。请注意,在MySQL中,您使用CONCAT
或CONCAT_WS
来加入字符串。另请注意,您只需要检查B.col1
是否为NULL
。
SELECT A.Col1
FROM TableA A
LEFT JOIN TableB B
ON A.Col1 = CONCAT_WS('.', B.Col1, B.Col2, B.Col3) OR
A.Col1 = CONCAT_WS('.', B.Col1, B.Col2)
WHERE B.Col1 IS NULL
输出:
Col1
one.3