【问题标题】:Cross referencing tables in a mySQL query?在 mySQL 查询中交叉引用表?
【发布时间】:2012-07-06 07:37:42
【问题描述】:

我有两张桌子。一个是具有唯一 id 字段的用户表,另一个是数据表,其中包含生成该数据的人的用户 ID。

我想做类似SELECT data,genned_by FROM datatable; 的操作,但我想用SELECT username FROM users WHERE id = genned_by 替换genned_by 的结果

以便查询的结果将用户标识更改为与另一个表对应的用户名。

我做了一些研究,发现INNER JOIN 可能是我正在寻找的东西,但我在阅读后非常不确定如何使用它。帮忙?

【问题讨论】:

    标签: mysql inner-join


    【解决方案1】:

    尝试使用

    SELECT d.data, u.username FROM database d INNER JOIN user u ON u.id=d.genned_by
    

    希望对你有帮助

    【讨论】:

    • :) 谢谢。这有助于我理解 INNER JOIN 语法现在应该如何工作。
    【解决方案2】:
    SELECT datatable.data,users.username 
    FROM datatable, users
    WHERE users.id = datatable.genned_by
    

    【讨论】:

    • WHERE 子句中的“JOIN”糟透了!
    • 这行得通。我不敢相信我忽略了这样一个明显的解决方案。也许我只是想让自己变得更难?
    • 因为它容易出错。您多久在这里阅读一次用户忘记将其添加到 WHERE 子句并且想知道错误结果的问题。无论如何,当您需要 LEFT/RIGHT JOIN 时,您必须学习正确的语法。
    • @saihenjin 是的,这很简单。
    • @tombom 我期待你向我提供一个真正的理由(性能等),结果有点失望。如果这只是个人喜好问题而不是我,那么使用这种语法以及左/右连接会更自然和直观,例如:where users.id = datatable.genned_by(+)
    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2015-02-18
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多