选择的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 选择查询 [关闭]