- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个复杂的 sql 查询。只是为了解释我的问题的目的,我减少了以下简短查询:
select a.column1 as field1,b.column2 as field 2,c.column3 as field3,COALESCE(SUM(d.paid_amt) OVER (PARTITION BY a.some_column),0) as amount_paid
from a Inner join b on b.column3=ac.olumn2
right join c on c.column4=b.column1
left join d on d.column2=a.column1 and d.column5 = a.column1
where ...//some conditions
所以我很确定这里发生了什么。我更关心 d 表上的最后一个左连接。如果 d 表没有匹配 d.column5 = a.column1
的记录,那么我不会得到任何结果。
但我试图以这样一种方式编写查询,即如果 d 表使用 where 条件 d.column5 = a.column1
返回任何值,那么我想使用这些值,否则如果d 表中没有记录我只想从以前的连接结果中获取记录并获取我需要的记录。
这里对于当前查询,问题如预期的那样,如果连接不匹配 where 条件,则它会删除所有记录。无论 where 条件是否满足,我都想要记录。
我不太确定如何在一个查询中执行此操作。任何建议表示赞赏。
注意:@scaisEdge 和@Zaynul Answer 工作正常。但问题是如果我在连接和子句上移动条件,则计算量。 am ount 计算也应该在相同的条件下 d.column5 = a.column1
。所以我不太确定如何克服这个问题:(
示例日期如下:
field1 | field2 | field3 | ampount_paid | some_column_to_match
--------------------------------------------------------------
name | value1 | other1 | 100 | 1
name1 | value2 | other2 | 100 | 1
name2 | value3 | other3 | 100 | 2
所以我刚刚添加了最后一列来解释我想要的总和。我只想在 some_column_to_match
匹配时对字段求和。所以我试图获得如下输出:
field1 | field2 | field3 | amount_paid | some_column_to_match
--------------------------------------------------------------
name | value1 | other1 | 200 | 1
name1 | value2 | other2 | 200 | 1
name2 | value3 | other3 | 100 | 2
所以基本上计算应该是 amount_paid
中所有值的总和,其中 some_column_to_match
值匹配。因此,在上面的示例中,前两列应该返回 200,因为它在每个单独的字段中返回 100 以获得相同的值。
最佳答案
如果你想要左连接,那么你不应该在 where 条件下使用左连接表 (d.column5 = a.column1) 的列,这样连接就变成了内部连接
在这些情况下,在相应的 ON 类中添加与左连接表相关的列的条件
select a.column1
,b.column2
,c.column3
,d.column4
from a Inner join b on b.column3=ac.olumn2
right join c on c.column4=b.column1
left join d on d.column2=a.column1 AND d.column5 = a.column1
关于SQL从左表中获取左连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442408/
我收到这个查询: $query = mysql_query("SELECT arbejdsopgave.*, DATE_FORMAT(dato, '%d-%m
我是一名优秀的程序员,十分优秀!