如何以不等于的方式联接来自不同数据库的2个表

时间:2019-09-30 10:45:52

标签: mysql mariadb

我想联接来自不同数据库的2个表。

例如,我有table1table2

结果我想获取table2上不存在的table1数据。

table1

name     langid
name1    en
name1    no
name2    en
name3    en

table2

name     langid
name1    en
name1    id
name1    no
name2    en

所以结果应该是这样

得到我想要的东西

name     langid
name1    en
name1    no
name1    id
name2    en
name3    en

我尝试的代码

select p66.language_string_text_id, p66.language_string, p66.language_id
FROM project66.languagestrings p66
JOIN wisehouse.languagestrings wh 
ON p66.language_string_text_id != wh.language_string_text_id
GROUP BY p66.language_string_text_id, p66.language_id

但是此代码不起作用。

4 个答案:

答案 0 :(得分:0)

您需要UNION来删除重复项而不是联接:

select name, langid from table1
union
select name, langid from table2

请参见demo
结果:

| name  | langid |
| ----- | ------ |
| name1 | en     |
| name1 | no     |
| name1 | id     |
| name2 | en     |
| name3 | en     |

答案 1 :(得分:0)

您可以简单地执行以下操作

cachedMessaging.send(...)

答案 2 :(得分:0)

如果两个数据库位于同一数据库服务器上,您可以尝试使用不匹配的左连接

假设project66.languagestrings是table2(不匹配的表),而wisehouse.languagestrings是table1

  select p66.language_string_text_id, p66.language_string, p66.language_id 
  FROM project66.languagestrings p66
  LEFT JOIN wisehouse.languagestrings wh  ON p66.language_string_text_id = wh.language_string_text_id
      and p66.language_id = wh.language_id
  WHERE wh.language_string_text_id is null 

答案 3 :(得分:0)

SELECT `DB1`.`table`.`id` , `DB1`.`table`.`name` 
FROM `DB1`.`table` 
JOIN `DB2`.`table2` ON `DB1`.`table`.`id` = `DB2`.`table2`.`parent`