一尘不染

MySQL-选择,加入

sql

几个月前,我和其他人一起用PHP编写了一个简单的应用程序。在那里,我们需要根据一个用户ID和您需要从该用户ID选择的行中获取的另一个值,从多个表中执行SELECT。

我的第一个想法是创建多个SELECT并解析PHP脚本中的所有输出(使用所有mysql_num_rows()和类似的函数进行检查),但是那个家伙告诉我他会这样做。“好的没问题!”
我想,我的写作要少得多。好吧,当我发现他只用一条SQL语句就做到了时,真是一个惊喜:

SELECT
  d.uid AS uid, p.pasmo_cas AS pasmo, d.pasmo AS id_pasmo ...
FROM
  table_values AS d, sectors AS p
WHERE
  d.userid='$userid' and p.pasmo_id=d.pasmo
ORDER BY
  datum DESC, p.pasmo_id DESC

(语句的缩短部分(…))

通常,我需要知道此方法(执行此方法的正确方法?)与JOIN之间的区别-什么时候应该使用哪个方法?

同样,对这两种解释和示例的任何引用都将非常方便(尽管不是来自MySQL引用-我确实是这种材料的新手,并且在这里大致写成文章。)


阅读 160

收藏
2021-03-08

共1个答案

一尘不染

, 记号在ANSI-92标准中被替换,因此从某种意义上说现在已经20年了。

另外,在进行OUTER JOIN和其他更复杂的查询时,该JOIN表示法更加明确,易读并且(在我看来)是可调试的。

作为一般原则,请避免,并使用JOIN

根据优先级,JOIN的ON子句位于WHERE子句之前。这样一来,您就a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL可以检查中是否没有匹配的行b

使用,表示法类似于同时处理WHERE和ON条件。

2021-03-08