几个月前,我和其他人一起用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
(语句的缩短部分(…))
同样,对这两种解释和示例的任何引用都将非常方便(尽管不是来自MySQL引用-我确实是这种材料的新手,并且在这里大致写成文章。)
, 记号在ANSI-92标准中被替换,因此从某种意义上说现在已经20年了。
,
另外,在进行OUTER JOIN和其他更复杂的查询时,该JOIN表示法更加明确,易读并且(在我看来)是可调试的。
JOIN
作为一般原则,请避免,并使用JOIN。
根据优先级,JOIN的ON子句位于WHERE子句之前。这样一来,您就a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL可以检查中是否没有匹配的行b。
a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL
b
使用,表示法类似于同时处理WHERE和ON条件。