查询1。
select friends.name,social.facebook
from friends inner join social on friends.id=social.fid where facebook="Yes";
输出。
+-----------------+
| name | facebook |
+-----------------+
| ABC | Yes |
| BCD | Yes |
| CDE | Yes |
+-----------------+
查询2.
select f.name,s.facebook from friends as f,social as s
where f.id=s.fid && s.facebook="Yes";
输出
+-----------------+
| name | facebook |
+-----------------+
| ABC | Yes |
| BCD | Yes |
| CDE | Yes |
+-----------------+
哪种方式更可靠,更快?
答案 0 :(得分:1)
我会说Query1符合ANSI标准且可取。如果省略WHERE条件,则Query2将成为交叉连接,从而提供不需要的数据。在Query1中,如果未指定JOINed列,则会出现更可靠的错误
答案 1 :(得分:1)
结果集没有区别,但您的第一个查询是使用ANSI样式显式连接语法
select friends.name,social.facebook
from friends inner join social on friends.id=social.fid
where social.facebook="Yes"; //also qualify the column with alias/table name
而下面的第二个查询是使用旧式隐式连接语法。
select f.name,s.facebook from friends as f,social as s
where f.id=s.fid && s.facebook="Yes"
首选JOIN
样式,因为它更具可读性并清除你的意图。