2012-03-07 4 views
1

私はこのクエリを持っている私が使用する「有する」の文をmi < 10同様のへMySQLの「分」は

select date(fecha) as day, min(num) as mi 
from myTable 
where date(fecha) >= date(now()) 
and mi < 10 
group by day; 
+0

あなたの問合せに問題を解決する必要があります。 – B4NZ41

答えて

7

で、この条件を追加する方法

select date(fecha) as day, min(num) as mi 
from myTable 
where date(fecha) >= date(now()) 
group by day; 

select date(fecha) as day, min(num) as mi 
from myTable where date(fecha) >= date(now()) 
group by day 
having min(num) < 10; 
+0

この質問には、すべての種類の楽しい演奏の意味があります(主にJuanを対象としていますが、このコメントは質問よりもここにあてはまるようです)。つまり、date(fecha)> = date(now())はテーブルの全面スキャンを必要とします(今日の日付をあらかじめ計算するとそれを補うでしょう)。また、HAVING句は、グループ全体を含むクエリの結果をフルスキャンする必要があります(フルテーブルスキャンと同様ですが、完全にメモリ内にある可能性があります)。それは緩和するのが少し難しいです。 – Corbin

+0

合意。私は信じていますが、日付(fecha)は問題であり、日付(now())ではありません。しかし、日付(fecha)もselect文に含まれているので、完全なテーブルスキャンがすでに必要です。したがって、where句ではそれ以上のことはありません。コービン氏によると、事前に計算された日付がここでのパフォーマンスに最適です。 – Jody

+0

あなたは実際に日付(fetcha)を取り除くことができました。たとえば、今日は2012-03-07と仮定します。 fechaはいくつかの日時であると仮定します。すべての日付(fecha)> =今日、fecha> = todayです。 (したがって、date(column)は常に> = columnです。)したがって、節全体を索引で行うことができます(明示的に言及していたはずです...) – Corbin

0

多分これ...

select date(fecha) as day, min(num) as mi 
from myTable 
where date(fecha) >= date(now()) 
and num < 10 
group by day;