-1

重複の可能性:
最後の100を除くテーブルからすべてのレコードを選択する方法

いくつかの顧客情報を消去するcronジョブを実行したいと思います。顧客情報を格納するテーブルがあり、SQLクエリをテストして機能することを確認しています。私はこれに問題があります:

$result = mysql_query("SELECT * from order-table WHERE order_id NOT IN (
SELECT order_id
from order-table
ORDER BY order_id desc) LIMIT 50");


while($row = mysql_fetch_array($result)){

echo $row['order_id'];

echo "<br />";
}

問題は、エラーが発生することです。mysql_fetch_array()は、パラメーター1がリソースであり、ブール値が指定されていることを期待しています。

SQLで直接クエリを実行すると、サブクエリでLIMITがサポートされていないというメッセージが表示されるので、誰かが別の方法でこれを達成するのを手伝ってくれることを期待していましたか?お時間をいただきありがとうございます。

4

2 に答える 2

1

上位100行をスキップして、50行を取得します。

SELECT * FROM order_table ORDER BY order_id DESC LIMIT 100,50

http://dev.mysql.com/doc/refman/5.5/en/select.html

于 2012-08-24T22:15:49.657 に答える
0

またはサブクエリLIMIT内に含めることはできません。ただし、 or句のサブクエリで行うことができます。秘訣は、サブクエリが1行のみを返すようにしてから、またはを使用してその値を比較することです。 INNOT INFROMWHERE<<=

order_idこれにより、最後の50を除くすべての行が表示されます。

SELECT ot.* 
FROM order-table AS ot 
  JOIN 
    ( SELECT order_id
      FROM order-table
      ORDER BY order_id DESC
        LIMIT 1 OFFSET 50
    ) AS lim
    ON ot.order_id <= lim.order_id ; 
于 2012-08-24T22:19:39.453 に答える