【问题标题】:How to join 2 tables from different databases with not equals如何连接来自不同数据库的2个表不等于
【发布时间】:2019-09-30 10:45:52
【问题描述】:

我想加入来自不同数据库的 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

但此代码不起作用。

【问题讨论】:

  • '我要取 table2 的数据,table1 上不存在。' - 那么 name1/en 怎么会是你想要的结果呢?
  • 两个db在同一个mysql /maria db服务器上
  • @P.Salmon 来自table1 基本上我显示所有table1 数据,我想与table2 合并,但是,在table2 上,我不想显示@987654335 上已经有@.
  • @scaisEdge 是的..

标签: mysql mariadb


【解决方案1】:

您需要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     |

【讨论】:

  • 没有。查看演示。
  • 我可以导出联合的结果吗,我尝试导出,但它告诉我 ull 插入记录..顺便说一句,我在本地使用 phpmyadmin 和 mariadb
  • 我不知道如何使用你得到的结果。代码是一个简单的查询。
【解决方案2】:

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

select p66.language_string_text_id, p66.language_string, p66.language_id
FROM project66.languagestrings p66 
WHERE p66.language_string_text_id NOT IN 
(SELECT wh.language_string_text_id FROM wisehouse.languagestrings wh) 
GROUP BY p66.language_string_text_id, p66.language_id

【讨论】:

    【解决方案3】:

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

    假设 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 
    

    【讨论】:

    • 更新您的问题添加您真正使用的查询..实际结果和预期结果..NB 在您提取的样本中也存在两个表中的值(在我的不应该)和这个与您的声明“我想获取 table1 上不存在的 table2 数据”相反。 ....
    【解决方案4】:
    SELECT `DB1`.`table`.`id` , `DB1`.`table`.`name` 
    FROM `DB1`.`table` 
    JOIN `DB2`.`table2` ON `DB1`.`table`.`id` = `DB2`.`table2`.`parent`
    

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2013-11-11
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多