【问题标题】:mysql JOIN ON column = 'literal string or value' not returning expected resultmysql JOIN ON column ='literal string or value'不返回预期结果
【发布时间】:2020-02-12 09:24:03
【问题描述】:

这是我需要结果只返回具有 userID = 12345678 的行的查询结果还包含具有其他 userID

的字段
select `a`.*, `b`.`someField` from `a` left join `b` on `a`.`userID` = '12345678'

我该如何解决这个问题?

【问题讨论】:

  • 您在 ON 子句中没有任何链接条件的情况下加入 2 个表。
  • 好的,在这里学习,这是否意味着我必须添加链接列并且仅在文字值上链接不起作用?
  • 如果它们之间存在关系,您应该加入表,例如 a.somecolumn 引用 b.othercolumn 然后在 on 子句中:on a.somecolumn=b.othercolumn 最后添加 where 子句:where a.userID = '12345678'
  • “只返回行”从哪个表?使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。在给出业务关系(船舶)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。似乎当这很清楚时,它将成为一个常见问题解答。在考虑发布之前,请始终在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,带有和不带有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。
  • 请在代码问题中给出minimal reproducible example--剪切&粘贴&可运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)How to Ask 适用于包含 DBMS 和 DDL 的 SQL,其中包括约束、索引和表格初始化。

标签: mysql join left-join


【解决方案1】:

您以错误的方式使用 JOIN 条件:

SELECT `a`.*, `b`.`someField` 
from `a` left join `b` on a.matchingField = b.matchingField
WHERE `a`.`userID` = '12345678'

这是进行正确连接的方法。您有一个字段是 matchingField,它是一个表和另一个表中的记录之间的链接,用户 ID 是过滤条件。 请注意,macthingField 也可以是相同的用户 ID。在这种情况下:

SELECT `a`.*, `b`.`someField` 
from `a` left join `b` on a.userID = b.userID
WHERE `a`.`userID` = '12345678'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多