2016-10-12 11 views
0

私は、1,000,000を超えるエントリを持つテーブル "push_messages"を持っています。最初の10個の最新のエントリを選択し、配列にないエントリを選択するためにIDの配列に対してチェックするMySqlクエリが必要です。MySqlが存在しないか、クエリでLIMITでないです。

$array = array(5, 7, 2, 9); 
$sql ="SELECT id, name, message FROM push_messages 
     WHERE id NOT IN (". implode(",", $array) .") 
     ORDER BY id DESC 
     LIMIT 10"; 

しかし、これは最初の10のリストに結果を返しません。

誰かが私を助けることができれば嬉しいです..ありがとう。

+0

それから何が返されますか? – Epodax

+0

これはNOの結果を返します...つまり、配列に含まれていないIDを返さないことを意味します。 –

+0

私はクエリを試して、それはうまく動作します – kerv

答えて

1

問題はありませんが、この問題はありません。問題は他にもあります。

クエリの出力を実行して実行することができます。

SELECT id, name, message FROM push_messages 
    WHERE id NOT IN (5,7,2,9) 
    ORDER BY id DESC 
    LIMIT 10; 
1

NOT IN or IN work without "" in bracket()ので、あなたは(NOTカッコ内に)クエリの前に破のようなクエリから「」削除して、変数に格納し、クエリで文字列を渡しているという問題があります。 私は(qoutes)、

SELECT ID、名前、IDでないpush_messages からのメッセージあなたは "" なしの両方

クエリを試すことができます

、それは正常に動作クエリで試してみました識別DESC BY(5、7、2、9) ORDER LIMIT 10

では、Alを戻します結果は5,7,2,9である。 "有する

クエリ"(qoutes)、

SELECT ID、名前、push_messages ID NOT IN FROMメッセージID DESC BY( "5、7、2、9") ORDER LIMIT 10

id = 5の結果のみを返します。

+0

2番目のクエリが機能しません。 – Karthi

+0

2番目のクエリはid = 5の結果しか返しません。 – Bhavin

関連する問題