很难解释我正在尝试做什么,所以继续查询已经有效:
SELECT
(SELECT COUNT(cars) '. HUGE_FROM_LIST .' '. HUGE_WHERE_QUERY .' AND cars > 0 ) AS cars,
(SELECT COUNT(houses) '. HUGE_FROM_LIST .' '. HUGE_WHERE_QUERY .' AND houses_type = 8 ) AS houses8,
...
这样我得到两个结果,告诉我有多少辆汽车和8型房屋。我不会为每个结果做一个查询,所以我尝试了subselects。
我做了subselects,所以单个查询只取决于他们自己的WHERES。 问题是每次都重复HUGE_FROM_LIST和HUGE_WHERE_QUERY,整个事情变得非常大。
有更优雅的东西吗?
答案 0 :(得分:1)
SELECT
COUNT(IF(cars > 0, TRUE, NULL)) AS cars,
COUNT(IF(houses_type = 8, TRUE, NULL)) AS houses8,
...
'. HUGE_FROM_LIST .'
'. HUGE_WHERE_QUERY
答案 1 :(得分:0)
我不确定你为什么不想做多个查询,但无论你怎么做...如果你有SELECT
标准(逻辑)将在许多不同的地方重复将该逻辑封装到单个视图中可能是个好主意。然后,当您需要使用该逻辑获取该数据时,您可以简单地引用该视图。