【问题标题】:MySQL where condition but not limited by itMySQL where 条件但不受其限制
【发布时间】:2011-02-15 16:54:03
【问题描述】:

我想在我的数据库上运行这样的查询:

SELECT SUM( t1.value ) AS total1, SUM( t2.value ) AS total2, SUM( t3.value ) AS total3, SUM( t4.value ) AS total4
FROM pay1 t1, pay2 t2, pay3 t3, pay4 t4
WHERE t1.date = '2010-04-29'
AND t2.date = '2010-04-29'
AND t3.date = '2010-04-29'
AND t4.date = '2010-04-29'

我正在生成一份付款报告,我希望根据匹配日期查看每个表格中的付款总额。 问题是某些表不满足日期条件,如果不满足,我希望它们显示为 0 值。目前,如果任何表格与日期不匹配,我会得到 0 个结果。我想在不满足日期的任何地方显示 0 值,并且其他字段应该显示找到的值。

对我来说完美的操作数是“ANDOR”,这样它就不会受到任何表格中没有数学运算的日期的限制。不幸的是,据我所知,ANDOR 不存在,我该怎么办?

谁能帮忙?谢谢。

【问题讨论】:

    标签: mysql conditional-statements where


    【解决方案1】:

    你想要

    SELECT
      (SELECT SUM( value ) FROM t1 WHERE date = '2010-04-29') AS total1,
      (SELECT SUM( value ) FROM t2 WHERE date = '2010-04-29') AS total2,
      (SELECT SUM( value ) FROM t3 WHERE date = '2010-04-29') AS total3,
      (SELECT SUM( value ) FROM t4 WHERE date = '2010-04-29') AS total4
    

    【讨论】:

      【解决方案2】:

      听起来您想使用outer join,而不是默认的内连接。

      外连接不需要每个 在两个连接表中记录到 有匹配的记录。加入的 表保留每条记录——即使没有 存在其他匹配记录。外 连接进一步细分为左侧 外连接、右外连接和 全外连接,取决于哪个 表一个保留来自的行 (左、右或两者兼有)。

      -Wikipedia

      【讨论】:

      • 基本正确,但是对于这个查询来说,JOIN 确实是错误的工具。你想要的是 4 个独立的查询,就像 Tomalak 建议的那样。
      猜你喜欢
      • 2023-03-19
      • 2019-02-16
      • 2010-11-07
      • 2013-02-24
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多