我目前正在開發一個將根據潛在客戶數據生成報告的程序。我的問題是,我正在運行3個查詢,我只想運行一個查詢。例如,我想收集過去一天產生的線索的數據,我想知道有多少線索總數,以及那個時間段內有多少銷售線索。 (售出= 1 /售出= 0)。問題出現在這個查詢目前正在進行2個查詢,其中一個銷售= 1
,WHERE
銷售= 0
銷售WHERE
。這一切都很好,但是當我想要在過去一天,一週,一個月,一年以及所有時間生成這些數據時,我將不得不運行10個查詢來獲取這些數據。我覺得這是一個更有效的方式。我知道我可以爲此創建一個mySQL函數,但我不明白這是如何解決這個問題的。 謝謝!是否有可能在mySQL中創建多層WHERE語句
回答
一種方法做的是利用聚合函數(通常SUM
和COUNT
幫助你在這種情況下最)隨着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
)可以像要通過使用AND
和OR
一樣複雜。
Disclamer:代碼沒有經過測試,這只是作爲一個應該稍作修改的例子。
爲什麼不GROUP BY出售讓您獲得總計售出和未售出
真棒,這將解決售出vs未售出的問題。任何方式來做這一天,一週,一個月,一年? – Brendan 2010-04-27 22:31:06
@Brendan:它可能並不比單獨的查詢更有效率,但是可以創建一個臨時表(稱爲'cutoff_times')和5個臨界值,然後執行'main_table AS m JOIN cutoff_times AS t ON m.submission_date> t.cutoff_date'。這是一個'大於連接'而不是通常的等連接。 – 2010-04-27 22:57:28
- 1. 是否有可能將這個mySQL語句重寫爲redbean ORM的WHERE子句?
- 2. 是否有可能在select語句的where子句卡桑德拉
- 3. 是否有可能通過mysql獲取表的創建語法?
- 4. 在mysql中創建動態where子句
- 5. 動態創建WHERE語句
- 6. 是否有可能在MySQL的select語句上觸發?
- 7. 是否有可能在html.partial中添加where子句
- 8. WHERE語句中的可選AND MySQL
- 9. 是否有可能在Java中從MySQL創建新帳戶?
- 10. LINQ中有多個.Where()語句是性能問題?
- 11. 你可以在MySQL查詢中的WHERE語句中有OR嗎?
- 12. MYSQL WHERE LIKE語句
- 13. MYSQL where IF語句?
- 14. Java問題:是否有可能在另一個switch語句中有switch語句?
- 15. 是否有可能追溯在表上使用的「創建索引」語句
- 16. 不能在mysql查詢中有兩個where語句
- 17. 是否有可能在Python中使用RETURN語句創建帶有多個IF和OR的單線程?
- 18. 是否有可能在UITableView中創建多個列?
- 19. 如何添加多個查詢WHERE語句,可能有或可能沒有值
- 20. 是否可以在WHERE子句中使用MySQL字段值?
- 21. 可能檢查AS語句變量中的WHERE? MySQL的
- 22. 是否有可能從C#函數謂詞中構建SQL where子句?
- 23. 是否有可能創建一個選擇在MySQL系列?
- 24. 是否有可能創建只讀在MySQL選項查看?
- 25. 是否可以在單個sqlplus select語句中擁有多個CASE語句?
- 26. 是否有可能爲動態if語句創建表達式樹?
- 27. 是否有可能在C#中強制使用using語句?
- 28. 是否有可能在PHP中使用方法獲取語句?
- 29. 是否有可能在if語句中使用heredoc?
- 30. tsql:是否有可能在select中嵌套case語句?
何處> xyz AND sold = 1? – 2010-04-27 22:17:51
我知道如何使用AND和OR語句。我想我想知道是否有一種方法來分組語句返回多個結果集 – Brendan 2010-04-27 22:25:34