嗨有一个两个表一个表包含名为列
表 A _id,英语,印地语
其他表包含
表 B _id,英语,印地语
我想通过将单词与 Eng 匹配来加入两个表,如果 Eng 单词不匹配,它将被添加到来自表 B 的表 A 中,否则表 A 的值将保留
例如
现在表 B
表 A
结果将在表 A 上是
嗨有一个两个表一个表包含名为列
表 A _id,英语,印地语
其他表包含
表 B _id,英语,印地语
我想通过将单词与 Eng 匹配来加入两个表,如果 Eng 单词不匹配,它将被添加到来自表 B 的表 A 中,否则表 A 的值将保留
例如
现在表 B
表 A
结果将在表 A 上是
FULL JOIN
是组合多个表中的行的术语。不适用于您的需求。
您只需将 table中不在table 中的a
所有条目插入 table 。b
a
INSERT INTO TABLE a(Eng, Hindi) SELECT Eng, Hindi FROM b WHERE eng NOT IN (SELECT eng FROM a);
如果您只想获得(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演示