你有两个表,一个表包含名为
的列表A. _id,Eng,Hindi
其他表包含
表B. _id,Eng,Hindi
我希望通过匹配单词与Eng 来加入两个表格如果Eng单词不匹配则会将其添加到表A中,而表A中的表格A将保留
例如
现在表B
表A
结果将在表A上
答案 0 :(得分:2)
FULL JOIN
是组合多个表中的行的术语。不适用于您的需求。
您只需要在表a
中插入表b
中不在表a
中的所有条目。
INSERT INTO TABLE a(Eng, Hindi) SELECT Eng, Hindi FROM b WHERE eng NOT IN (SELECT eng FROM a);
答案 1 :(得分:1)
如果您只想获得(SELECT
)所需的输出,TableA
可以包含TableB
中不存在的记录,那么您可以模仿FULL JOIN
来实现目标
SELECT e.eng, COALESCE(a.hindi, b.hindi) hindi
FROM
(
SELECT eng FROM TableB
UNION
SELECT eng FROM TableA
) e LEFT JOIN TableB b
ON e.eng = b.eng LEFT JOIN TableA a
ON e.eng = a.eng
如果另一方面TableA
始终仅包含eng
TableB
值的子集,那么您可以使用LEFT JOIN
SELECT b.eng, COALESCE(a.hindi, b.hindi) hindi
FROM TableB b LEFT JOIN TableA a
ON b.eng = a.eng
这是 SQLFiddle 演示
现在,如果您想更新TableA
的内容并假设A_id
为AUTOINCREMENT
,您可以
INSERT INTO TableA (eng, hindi)
SELECT b.eng, b.hindi
FROM TableB b LEFT JOIN TableA a
ON b.eng = a.eng
WHERE a.eng IS NULL
这是 SQLFiddle 演示
或
INSERT INTO TableA (eng, hindi)
SELECT b.eng, b.hindi
FROM TableB b
WHERE NOT EXISTS
(
SELECT *
FROM TableA
WHERE eng = b.eng
);
这是 SQLFiddle 演示