微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取查询的 SQL 结果

如何解决获取查询的 SQL 结果

我有一个样本总部表

id     name         
1      California   
2      Florida City
3      Washington DC
4      Oklahoma

我还有一个示例销售数据表

id     headquarter_id     Sales       Year
 1          2             2000        2021
 2          3             5000        2021
 3          4             1000        2021

我的 sql 查询

select hq.name,st.Year,st.sales from salesTable st
left join headquarters hq on hq.id = st.headquarter_id

结果是

name              Year      Sales
Florida City      2021      2000
Washington DC     2021      5000
Oklahoma          2021      1000

即使销售表中没有加利福尼亚的销售记录,是否有可能得到如下结果?

name              Year      Sales
California        2021      0
Florida City      2021      2000
Washington DC     2021      5000
Oklahoma          2021      1000

解决方法

由于左连接,您似乎没有得到结果。按照您的做法,它不会匹配 California,因为它没有 Sales 数据表中的数据。

试试这个:

select 
hq.name,st.Year,case when st.sales is null then 0 else st.sales end as sales
from headquarters hq
left join salesTable st on hq.id = st.headquarter_id
,

@Guilherme Barbosa 为您提供了正确的查询,但让我解释一下背后的原因。

LEFT JOIN:它选择您左侧的源/根表的所有记录,并选择右侧表中的匹配记录。即使匹配 在右表中找不到记录,它将显示左表的所有记录 边桌。

在 JOIN 中遵循从上到下的表格顺序,如下所示。 t1 排在最前面,所以它在 ON t1.id = t2.id 中查询的左侧,t2 排在 t3 之前,所以 ON t2.id = t3.id

SELECT *****
FROM table1 t1
LEFT JOIN table3 t2
**ON t1.id = t2.id**
LEFT JOIN table3 t3
**ON t2.id = t3.id**

现在在您的查询中,您将 salesTable 用作查询中的源/根表,它只有 3 个 headquarter_id 并且它位于数据选择查询的左侧(LEFT JOIN)。因此它只返回 3 条记录。

如果您在 headquarter 子句中使用源/根表 FROM,那么它将选择您所有的总部并显示在 salesTable 中匹配的记录。

正确的查询如下。

SELECT hq.name,CASE
        WHEN st.sales IS NULL THEN 0
        ELSE st.sales
    END AS sales
FROM headquarters hq
LEFT JOIN salesTable st ON
hq.id = st.headquarter_id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?