是否可以在mySQL中创建多层WHERE语句

时间:2010-04-27 22:16:12

标签: mysql

我目前正在开发一个程序,它将根据潜在客户数据生成报告。我的问题是我正在运行3个查询,我只想运行一个查询。例如,我想收集过去一天生成的潜在客户的数据 submission_date > (NOW() - INTERVAL 1 DAY) 我想知道有多少总线数,以及在那个时间段内有多少销售线索。 (sold = 1 / sold = 0)。问题在于此查询目前正在进行2次查询,其中一次查询WHERE已售出= 1,另一次查询WHERE已售出= 0。这一切都很好,但是当我想生成过去一天,一周,一个月,一年和所有时间的数据时,我将不得不运行10个查询来获取这些数据。我觉得有一个更有效的方法来做到这一点。我知道我可以为此创建一个mySQL函数,但我不知道这可以解决这个问题。 谢谢!

2 个答案:

答案 0 :(得分:2)

为什么不销售GROUP BY,以便获得已售出和未售出的总数

答案 1 :(得分:1)

一种方法是利用聚合函数(通常SUMCOUNT在这种情况下帮助最多)以及MySQL的IF()函数。

例如,您可以使用以下查询:

SELECT 
  SUM(IF(sold = 1, sold, 0)) AS TotalSold, 
  SUM(IF(sold = 0, sold, 0)) AS TotalUnsold,
  SUM(IF(submission_date > (NOW() - INTERVAL 1 WEEK) 
    AND sold = 1, sold, 0) AS TotalSoldThisWeek
FROM ...
WHERE ...

条件(例如sold = 1)可能会因使用ANDOR而变得复杂。

免责声明:代码未经过测试,这仅作为一个示例提供,可以进行微小的修改。