【发布时间】:2016-11-02 21:22:12
【问题描述】:
我有以下 SQL 查询:
SELECT t1.id as id,
t1.username as username,
CONCAT_WS(' ', t2.ad,t2.soyad) as fullname,
t2.title as title,
t3.pass as password,
t3.phone_login as hat,
t2.time as date
FROM kullanici t1, kullanici_tanim t2, dial_users t3
WHERE t1.id = t2.usr_id AND t1.agent_id = t3.user_id
GROUP BY t1.id
ORDER BY t1.id ASC
此查询工作正常。我想知道我应该使用联接吗?正确的方法是什么?
【问题讨论】:
-
使用
JOINs;从技术上讲,您已经符合WHERE子句中的条件,但是您这样做的方式过时且难以阅读。 -
如果工作正常,问题出在哪里......只是一个提示......促进使用显式
JOINsintaxis,Aaron Bertrand 写了一篇很好的文章Bad habits to kick : using old-style JOINs 关于它。 -
即使两者都会给出相同的结果,因为您现在正在使用带有 where 条件的 Cross Join,而在 Join 条件中,您将按所需列进行过滤
-
现代 JOIN 语法将链接标准与过滤标准分开。这使得忘记链接标准并最终得到一个讨厌的笛卡尔积连接变得更加困难。
-
逗号表示(“隐式”)交叉连接,其优先级低于(“显式”)关键字连接。