0

嗨有一个两个表一个表包含名为列

表 A _id,英语,印地语

其他表包含

表 B _id,英语,印地语

我想通过将单词与 Eng 匹配来加入两个表,如果 Eng 单词不匹配,它将被添加到来自表 B 的表 A 中,否则表 A 的值将保留

例如

现在表 B

在此处输入图像描述

表 A

在此处输入图像描述

结果将在表 A 上是

在此处输入图像描述

4

2 回答 2

2

FULL JOIN是组合多个表中的行的术语。不适用于您的需求。

您只需将 table中不在table 中的a所有条目插入 table 。ba

INSERT INTO TABLE a(Eng, Hindi) SELECT Eng, Hindi FROM b WHERE eng NOT IN (SELECT eng FROM a);
于 2013-10-14T10:40:20.597 回答
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_idAUTOINCREMENT

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演示

于 2013-10-14T10:23:21.977 回答