我正在处理SQL查询,但无法进行完全外部联接

时间:2019-05-11 11:58:09

标签: php mysql sql database

我想研究SQL。内部联接不能正常工作。我正在使用两个表在这些表代码的“ city_id”字段上获取数据,所以请帮助我

inventory
==========================================
inventory_id | city_id | title |is_enabled
==========================================
          1  |       1 |  abc  | 1
          2  |       1 | bcd   | 1



cities
====================================
city_id | city  | title
===================================
     1  | delhi |  abc
     2  | nodia |  bcd


   SELECT * FROM inventory i 

                INNER JOIN  cities c 

                ON i.city_id = c.city_id 

                WHERE i.is_enabled = 1 

                ORDER BY i.inventory_id DESC LIMIT 10;

1 个答案:

答案 0 :(得分:1)

某些数据库(例如MS Access和MySQL)不支持FULL OUTER JOIN

但是,很少需要FULL OUTER JOIN,而在使用表之间定义的键时几乎不需要。结构良好的数据库具有具有适当值的键。

我怀疑INNER JOIN可以满足您的要求:

SELECT . . .   -- list out the columns you want
FROM inventory i INNER JOIN
     cities c
     ON i.city_id = c.city_id
WHERE i.is_enabled = 1
ORDER BY i.inventory_id DESC
LIMIT 10;

此查询假定inventory行具有有效的city_id。如果有些是NULL(允许的,不匹配的值),则可以改用LEFT JOIN

其他一些注意事项:

  • 明确列出您想要的列。特别是重复的列名可能会出现问题。
  • 使用表别名,因此查询更易于编写和阅读。
  • 限定所有列名称。我猜测is_enabled来自inventory。我不必猜测。
  • 请勿在数字常量周围加上单引号。我猜想is_enabled是数字,而不是字符串。