【问题标题】:phpmyadmin mySQL Query for joinsphpmyadmin mySQL 查询连接
【发布时间】:2016-05-19 22:07:02
【问题描述】:

我有一张桌子 A -

SNo     ID     Place
1      1000    Null
2      Null    Null
3      1020    CityX

还有另一张桌子 B -

 ID     Place
1000    CityY
2000    CityZ
4040    CityAA

现在,我需要连接表 A 和 B,以便我可以从表 B 中获取表 A 中 Place 的值。所以我的最终表应该是这样的 -

SNo     ID     Place
1      1000    CityY
2      1020    CityX

我正在尝试创建一个带有连接的 SQL 查询,但这只会给我空行。我做到了-

Select * from A
left outer join B
on A.ID = B.ID
where A.ID IS NOT NULL

我的查询在哪里中断?如何获得预期的结果?

【问题讨论】:

  • 我删除了不相关的标签;这个问题实际上与 PHP 或 PHPMyAdmin 没有任何关系。请注意,PHPMyAdmin 不是 数据库;它只是 MySQL 的用户界面。
  • 是否存在表B中的ID不在表A中的情况?

标签: mysql sql join


【解决方案1】:

看来你需要内联

Select A.ID,  ifnull(A.Place, B.Place) from A
Inner join B
on A.ID = B.ID
where A.ID IS NOT NULL

【讨论】:

  • 当 Place 存在于 A 中时,我想从 A 中获取它,如果它不存在于 A 中并且在 B 中可用,我想从 B 中获取它。
【解决方案2】:
Select A.Sno, A.ID, IF(A.Place is null, B.Place, A.place) as Place from A
left join B
on A.ID = B.ID
where A.ID IS NOT NULL

【讨论】:

    【解决方案3】:

    从技术上讲,您的查询没有问题,这是您问题的有效 sqlfiddle

    http://sqlfiddle.com/#!9/29a002/1/0

    由于您没有发布实际架构或截图,我怀疑列定义不兼容或数据无效

    【讨论】:

      【解决方案4】:

      您可以这样做,而是选择表 B 的 Place 字段。

      select SNo, B.ID, B.Place 
      from A
      left outer join B
      on A.ID = B.ID
      

      【讨论】:

        猜你喜欢
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多