【问题标题】:Mysql how to join tables [closed]Mysql如何加入表[关闭]
【发布时间】:2016-09-25 03:20:27
【问题描述】:

我有三张桌子:

  • 表 1 包含一个主键。
  • 表 2 包含与表 1 的主键相同的外键。
  • 表 3 包含与表 2 的主键相等的外键。

问题:是否可以在只知道表 1 的主键的情况下从表 2 和 3 中选择信息?如果是这样,请给出一个 SELECT QUERY 的简短示例。我尝试过进行内部联接,但出现语法错误。

【问题讨论】:

  • 是的,很简单。内部连接应该做到这一点。展示您的尝试,我们将帮助您解决问题。
  • @codenoob 让我知道我的回答是否对您有用。
  • @Barmar and whatsup Barmar :),毕竟我最终没有选择 pheanstalk。我问了 beanstalk 的开发人员几个问题,最终决定使用数据库进行服务器间脚本通信。希望它能完成工作,不过我想我会在一周左右找到答案
  • 如果您遇到语法错误如何发布查询和错误
  • 我觉得去掉 PHP 标签就可以了,不是吗?

标签: php mysql select join


【解决方案1】:

是的,你可以。

示例:

table_a              table_b             table_c
 _______________      _______________     _______________
|  id  |  name  |    |  id  | gender |   |  id  |   age  |
|------+--------|    |------+--------|   |------+--------|
|   1  |  sam   |    |   1  |    m   |   |   1  |   18   |
|------+--------|    |------+--------|   |------+--------|
|   2  |  ana   |    |   2  |    f   |   |   2  |   22   |
|------+--------|    |------+--------|   |------+--------|

为了得到以下结果:

 _________________________________ 
|  id  |  name  | gender |   age  |
|------+--------+--------+--------|
|   1  |  sam   |    m   |   18   |
|------+--------+--------+--------|
|   2  |  ana   |    f   |   22   |

您可以使用以下 SQL 语句:

SELECT a.id, a.name, b.gender, c.age
FROM table_a AS a
LEFT JOIN table_b AS b
    ON a.id = b.id
LEFT JOIN table_c AS c
    ON a.id = c.id

P.S.:只回答这个是为了做 ascii art xD!

【讨论】:

  • 我不在乎您如何在家编写代码,但在此处发布答案时请使用 ANSI JOIN。我们努力推广良好的编码风格。
  • @Barmar 新编辑的 sql 语句现在是否等同于前一个?除了现在我使用左连接而不是默认内部,我更喜欢不丢失任何行
  • 是的,这样好多了。
猜你喜欢
  • 2012-07-21
  • 1970-01-01
  • 2014-10-14
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多