【问题标题】:Are these SQL queries identical - if not whats the difference这些 SQL 查询是否相同 - 如果不是,有什么区别
【发布时间】:2012-05-12 11:23:32
【问题描述】:

假设有正确的表 - 这两个查询之间有什么区别 - 它们何时会返回不同的结果

选择 * 来自 quiz_user 曲 在 qu.quiz_id = qt.quiz_id 和 qt.topic_id=44 上加入 quiz_topic qt 其中 qu.user_id=9 选择 * 来自 quiz_user 曲 在 qu.quiz_id = qt.quiz_id 上加入 quiz_topic qt 其中 qu.user_id=9 和 qt.topic_id=44

谢谢

【问题讨论】:

标签: mysql sql


【解决方案1】:

我看不出查询有什么不同。但是,如果您使用LEFT JOIN 而不是INNER(默认),结果会有所不同。

【讨论】:

  • 谢谢 - 所以如果查询是左连接,那么结果会有什么不同
  • @Gublooo:如果是LEFT JOIN,您很可能会获得更多行(quiz_user 中的所有行都将包含在结果集中,无论quiz_topic 中的相应行是否存在)
【解决方案2】:

没有,但第二个代码的意图更清楚,JOIN只是用来反映数据关系,而不是过滤。

在第一个代码的 JOIN 中,数字 44 似乎与 quiz_topic 与 quiz_user 的关系有关

【讨论】:

  • 谢谢 - 是的,同意你的观点 - 使用 join 指定过滤条件不是一个好主意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2012-03-29
  • 2012-01-15
  • 2020-03-22
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多