SELECT *
FROM `cms_goods`
WHERE rank < 20
OR rank > 20
LIMIT 10
このコードは、20 未満のランク フィールドの 10 レコードのみを返します。クエリで、より小さいレコードとより大きいレコードの両方を表示する必要があります。(制限10)
ユニオンを試してください:
SELECT * FROM `cms_goods` WHERE
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE
rank > 20 LIMIT 5
You can use a UNION ALL
(SELECT * FROM `cms_goods` WHERE rank < 20 LIMIT 5)
UNION ALL
(SELECT * FROM `cms_goods` WHERE rank > 20 LIMIT 5)
最良の方法は、数ミリ秒節約できるサブクエリを実行することでしたが、残念ながら、mySQL はサブクエリで LIMIT 機能をまだサポートしていません。
したがって、最良のオプションは、次のようなユニオンを使用することです。
SELECT * FROM `cms_goods` WHERE
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE
rank > 20 LIMIT 5
例えば:
$query = mysq_query("SELECT * FROM `cms_goods` WHERE rank < 20 LIMIT 5 UNION ALL SELECT * FROM `cms_goods` WHERE rank > 20 LIMIT 5");
説明: 最初のクエリは上位 5 つの結果を取得し、最後のクエリは下位 5 つの結果を取得し、UNION ALL はそれらを 1 つの結果に結合します。
PS: コメントを回答としてマークすることを忘れないでください。
使用できます
LIMIT 10, 20
次の10行目と20行目から選択します
サブクエリは多分?
SELECT * FROM cms_goods WHERE id IN (SELECT id FROM cms_goods WHERE rank < 20 LIMIT 10) OR id IN (SELECT id FROM cms_goods where rank > 20 LIMIT 10)