php - 我正在处理 SQL 查询,但没有使用完整的外部联接
问题描述
我想在 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;
解决方案
一些数据库(例如 MS Access 和 MySQL)不支持FULL OUTER JOIN
.
但是,FULL OUTER JOIN
很少需要 - 当您使用表之间定义的键时几乎不需要。结构良好的数据库具有具有适当值的键。
我怀疑 anINNER 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
是一个数字,而不是一个字符串。
推荐阅读
- python - 在使用 Flask uwsgi 提供 PIL 图像时尝试隐式序列转换
- php - 如何使用不同的ip克隆另一个数据库中另一个表中的数据表
- javascript - RecipeId 未定义
- spring-boot - 如何在apache生成的日志中隐藏敏感数据
- swift - 关闭 MainScreen 视图控制器
- visual-studio-code - VSCode:我想更改文本颜色(不是背景颜色,只是文字颜色),我应该编辑哪个配置文件?
- scala - 如何区分参数类型?
- c - 你可以给宏设置一个字符串吗
- react-native - 在 feathersjs 中上传文件时出现错误 500(一般错误)
- android - SYSTEM_UI_FLAG_LAYOUT_STABLE 标志在 Android R 中已弃用