3

最初のクエリでテーブルの上半分を取得する必要があり、次のクエリでは下半分が必要です。

私はトップのためにこれをやろうとしましたが、うまくいきません

SELECT * FROM t_domains WHERE type_domain='radio' ORDER BY 
date_created DESC LIMIT 0, (COUNT(*) / 2)

関数が機能するには、2 つのクエリとして必要です。

誰にもポインタやヒントがありますか?

4

4 に答える 4

3

2 つのクエリを実行することをお勧めします。

select count(*) from t_domains

合計数を取得してから、制限とオフセットを使用して必要なデータを取得します。

select * from t_domains limit count/2

トップと

select * from t_domains offset count/2

下半身用……

このアプローチは、別の状況でクエリを制限する方法も提供します。テーブルに 100 万のレコードが含まれている場合はどうなるでしょうか。

于 2012-09-02T18:50:29.860 に答える
1

前半

 mysql-> SET @n := 0

 mysql-> SELECT *,nnn FROM (
         SELECT *, @n := @n + 1 AS nnn  FROM t_domains   ORDER BY date_created 
         ) AS t
         WHERE nnn <=  ( SELECT COUNT(date_created) / 2  FROM t_domains  ) AND type_domain =    'radio'

後半はここを変更 WHERE nnn <= this "<" on this ">"

于 2012-09-02T19:43:18.367 に答える
0

これは常に機能します。

カウントを保存する

SELECT COUNT(*) FROM t_domains WHERE type_domain='radio'

次に、保存されたカウントを使用します。

SELECT * FROM t_domains WHERE type_domain='radio' ORDER BY 
date_created DESC LIMIT 0, {$stored_count/2}
于 2012-09-02T18:49:02.460 に答える