选择的MySQL查询问题[关闭]

Posted

技术标签:

【中文标题】选择的MySQL查询问题[关闭]【英文标题】:MySQL Query issue with select [closed] 【发布时间】:2012-04-02 11:34:23 【问题描述】:

我在数据库中有两个表“client”和“proposal”,

db.client = > id,name db.proposal => clientID,proposalID

select * from proposal 将选择所有的 clientID 和 proposalID 我想要查询,以便它使用 client.name 而不是 clientID 打印所有 proposal.proposalID

【问题讨论】:

开始阅读 SQL 连接 这让我很困惑,我在考虑它会使用内部联接但令人困惑,我认为内部联接不会解决我的问题。其他解决方案我必须在 php 中创建一个循环来获取每个 id 的名称,这显然是最糟糕的想法 @user794624 正如 Mark 建议的那样,您最好阅读(更多)有关联接的信息。虽然我不会在这里使用 INNER 加入,但我会使用一个。 谢谢大家,但是对于这样一个愚蠢的问题,我理应得到负面标记,这里是凌晨 4 点 15 分,可能是这个问题可以接受的原因, 【参考方案1】:

只需使用join:

SELECT client.name, proposal.proposalID
  FROM client
  JOIN proposal
    ON proposal.clientID = client.id
;

【讨论】:

【参考方案2】:

另一种“连接”两个表的方法:

SELECT proposal.proposalID, client.name
FROM client, proposal
WHERE proposal.clientID = client.id;

警告:我没有对此进行测试。

为了了解发生了什么,我建议您了解有关 SQL 连接的更多信息。 一些帮助您入门的链接:

http://www.w3schools.com/sql/sql_join.asp

http://en.wikipedia.org/wiki/Join_%28SQL%29

https://www.google.com/search?q=sql+join

【讨论】:

避免使用这种旧式语法。像这样非常简单的查询是可以的,但是对于更复杂的查询会变得混乱。使用JOIN... ON 将连接条件保留在相关表旁边,并让WHERE 子句仅包含过滤条件。 我刚刚注意到这个答案已被接受。我写这篇文章是为了展示另一种方法(除了使用 JOIN 关键字),但是正如 nnichols 所指出的,我建议避免使用这种语法,尤其是对于复杂的语句。【参考方案3】:

这很简单。使用两个表的join

SELECT c.name, p.proposalID
FROM client as c LEFT JOIN proposal as p
ON c.id=p.clientID

您应该通过指定的链接来决定加入的类型。您可以使用 LEFt,RIGHT,INNER 完全取决于您想要什么。

【讨论】:

为什么要左连接?在我看来,OP 要求进行内部连接似乎很清楚。 (或者实际上,对于右连接,但我假设内连接将给出与该数据集的右连接相同的结果。)

以上是关于选择的MySQL查询问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 终端中运行带有连接的 MYSQL 选择查询 [关闭]

MYSQL 中针对子查询的查询优化? [关闭]

使用 php 和 mysql 搜索查询 [关闭]

Laravel 按日期分组,如 MySQL 查询 GROUP BY MONTH(fields) [关闭]

MySQL 查询 - 这有啥问题吗? [关闭]

mysql怎么查询在某个时间范围内没有值的数据