mysql - MYSQL 两个内部连接不产生结果
问题描述
我有 3 个与 id 连接的表,其构造如下:
RAD table
rad_id strp_ID strf_ID
1 1 null
2 1 null
3 null 3
4 null 4
5 null 4
STRANKEP table
strp_ID strp_NAZIV
1 data1
2 data2
3 data3
STRANKEF table
strf_ID strf_NAZIV
1 data1
2 data2
3 data3
4 data4
我试图获得例如 strf_NAZIV 女巫的值是 data4,以防 rad_id=4。因为 rad_id=4 具有 strf_ID=4 并且在 STRANKEF 表中 stf_ID=4 具有 data4 值。
rad_id=4 的示例采石场是:
SELECT rad_id, strp_NAZIV, strf_NAZIV FROM RAD
INNER JOIN STRANKEP ON RAD.strp_ID=STRANKEP.strp_ID
INNER JOIN STRANKEF ON RAD.strf_ID=STRANKEF.strf_ID
WHERE rad_id = 4;
当我运行采石场时,我得到 0 行结果,没有错误和正确的列。我无法理解这一点,请指教。
rad_id strp_NAZIV strf_NAZIV
0 rows
解决方案
好的,第一件事是内部连接仅返回两个表中都存在元组属性的结果,当其中一个表包含例如 RAD 的空值时,将不会返回 ID 为 3、4、5 的元组,来自第一个内部连接的结果以及来自第二个的 1 和 2。更多参考:
https://www.w3schools.com/SQL/sql_join_inner.asp
尝试使用外部联接而不是内部联接来获取具有空值的结果。
推荐阅读
- reactjs - 为什么更新状态后子组件渲染在父div之外?
- rust - rustc 关于价值的误报警告从未读过?
- git - 我可以安全地删除 github 团队而不丢失它的存储库吗?
- python - 修改 Pandas 数据框中行值的格式
- pandas - 为什么我在执行 asfreq 后会丢失数据
- mysql - 使用 RAND 查询,但遵循定义的结构
- vue.js - Vue路由器总是重定向到错误页面
- elasticsearch - Kibana - 使用模式获取围绕特定文档的日志以标记上下文的开始和结束范围
- c++ - 添加 curl 子模块并获得“未解析的外部符号 __imp__curl_easy_init”链接错误
- msbuild - MSBuild 知名项元数据和 NuGet 包