MySQL“;关于;条件-它做什么?
首先,让我解释一下,我已经在MySQL中搜索了至少一个小时关于这个常用关键字的任何信息。问题是,我使用的任何搜索引擎都会在最琐碎和不相关的结果中匹配“on”这个词。我也没有幸浏览MySQL的文档 我看到on与内部联接一起使用是一个条件,但我不知道它的作用。用法的一个例子是MySQL“;关于;条件-它做什么?,mysql,inner-join,Mysql,Inner Join,首先,让我解释一下,我已经在MySQL中搜索了至少一个小时关于这个常用关键字的任何信息。问题是,我使用的任何搜索引擎都会在最琐碎和不相关的结果中匹配“on”这个词。我也没有幸浏览MySQL的文档 我看到on与内部联接一起使用是一个条件,但我不知道它的作用。用法的一个例子是 SELECT t1.name, t2.salary FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name; 我知道“WHERE”和“have”之间的区别
SELECT t1.name, t2.salary
FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name;
我知道“WHERE”和“have”之间的区别分别是过滤行和过滤组之间的区别
然而,我无法想象什么是“开启”过滤器
我想在使用内部联接时可能需要进行过滤,但我以前在内部联接的情况下使用过WHERE,如下所示:
SELECT g.id, g.name, g.date_created, g.date_updated, g.created_by,
c.fullname AS creator_name, g.updated_by, u.fullname AS updater_name,
COUNT(i.id) as image_count
FROM gallery_groups g INNER JOIN
users c INNER JOIN
users u INNER JOIN
gallery_images i
WHERE g.created_by=c.id AND g.updated_by=u.id AND i.group=g.id
GROUP BY g.name
ORDER BY g.date_updated DESC, g.name
如有任何信息和/或示例,将不胜感激 仅供参考,除
内部连接外,两者都相同。。。ON是ANSI 92语法
您可能需要谷歌ansi92语法与ansi86/89语法
而不是编写长WHERE语句,在打开关键字后,将表之间的依赖关系放在JOIN闭包中
它加快了数据库中的搜索过程(它与kartezjan矩阵相关联),使您的代码更干净,更容易放置真实的WHERE条件内部连接
确实可以在不使用ON的情况下编写,只需将所有ON子句移动到WHERE子句即可。使用sane优化器,在性能方面不会有什么不同(但仍会使查询更清晰!)
由于空处理,外部联接(例如,左联接
)不能被删除
SELECT a.foo, b.bar FROM a LEFT JOIN b ON (a.fk = b.pk)
如果b中不存在a.fk,将返回b.bar=NULL
SELECT a.foo, b.bar FROM a, b WHERE a.fk.b.pk
如果b中不存在a.fk,则不会返回行
仅供参考:连接语法是尝试一些解释或基准测试,它不太可能有什么不同。优化器并没有那么糟糕。我甚至怀疑3.x是真的。