带AND OR运算符的SQL查询

时间:2015-06-28 13:58:54

标签: mysql sql

我有这个SQL查询

SELECT entries.*, categories.name as name_cat, areas.name as name_area, sub_categories.name as name_sub
FROM entries, areas, sub_categories, categories
WHERE sub_categories.id= entries.id_sub
  AND **areas.id = entries.area**
  AND categories.id = entries.id_cat
ORDER BY entries.id DESC

它运作良好,但我确实在 entries.area 中有一些BLANK字段..这些字段没有结果..

我在查询中尝试了一些更改,但有些人给了我结果,而有些给了我更少的东西给了我正确的答案

1 个答案:

答案 0 :(得分:4)

2015年已经到了。过去的时间是放弃了连接运算符的旧式逗号语法,而是使用JOIN关键字。使用JOIN关键字,我们可以将谓词(条件)从WHERE子句移动到ON子句。

使用JOIN关键字,我们可以指定"外部联接"包括其他关键字。

例如,包括关键字LEFT(在JOIN之前)指定查询应该从" left"中的表返回行。即使右侧表格中没有匹配的行也是如此。

 SELECT entries.*
      , categories.name      AS name_cat
      , areas.name           AS name_area
      , sub_categories.name  AS name_sub
   FROM entries
   LEFT
   JOIN areas
     ON areas.id = entries.area
   LEFT
   JOIN sub_categories
     ON sub_categories.id= entries.id_sub
   LEFT
   JOIN categories
     ON categories.id = entries.id_cat
  WHERE 1=1
  ORDER BY entries.id DESC

可以省略行WHERE 1=1 ...我只是为了显示WHERE子句的位置而包含它,如果需要的话。