ホームページ >バックエンド開発 >PHPチュートリアル >not in を使用すると、mysql がデータを見つけられないのはなぜですか?

not in を使用すると、mysql がデータを見つけられないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 13:26:211410ブラウズ

id が含まれていない「記事」から id、cid、title、keywords、hits、addtime を選択します (4454,4453,4452,4451,4450,4449,4448,4447) addtime desc ,id desc LIMIT 0 , 18 で並べ替えます


上記のステートメントには、not in を削除するとデータが含まれます。何故ですか。データベースには 4,000 を超えるデータがあり、1 から 4454 までの番号が付けられています。調べないことは不可能です。そして、以前は大丈夫だったのに、突然見つからなくなりました。非常に奇妙な。


ディスカッションに返信 (解決策)

id が含まれていない `Articles` から id、cid、title、keywords、hits、addtime を選択します('4454','4453','4452','4451', '4450','4449','4448','4447') addtime desc ,id desc LIMIT 0 , 18 で並べ替えます

id が含まれていない `Articles` から id、cid、title、keywords、hits、addtime を選択します('4454','4453','4452','4451','4450','4449','4448','4447') order by addtime desc ,id desc LIMIT 0 , 18


まだ動作しません、たった今 いろいろ調べてみたら、その理由が分かりました。キーワードフィールドをチェックする必要はありません。しかし、理由はわかりません。

id が含まれていない「記事」から id、cid、title、keywords、hits、addtime を選択します('4454','4453','4452','4451','4450','4449','4448) ','4447') order by addtime desc ,id desc LIMIT 0 , 18


それでも動作しませんでしたが、検索して理由を見つけました。キーワードフィールドをチェックする必要はありません。しかし、理由はわかりません。 , しかし、それらをすべて削除してキーワードだけをチェックすると、それを見つけることができます。ここの状況はどうなっているのでしょうか?

または、select * from

を試してみることもできます。それ以外の場合は、select * from


を試すこともできます。これも機能しません

SQL コマンドが間違っている場合、データベースはエラーを報告します
エラーメッセージを投稿してください。

SQL コマンドが間違っている場合、データベースはエラーを報告します
エラー メッセージを投稿してください。


エラーは報告されませんでした。結果は 0 です。

つまり、条件を満たすデータがないということです

つまり、条件を満たすデータがないということです


上で言いました。データベースには 4,000 を超えるデータがあり、1 から 4454 までの番号が付けられています。調べないことは不可能なので、調べないことは不可能です。
id が含まれていない「記事」から id、cid、title、keywords、hits、addtime を選択します (4454,4453,4452,4451,4450,4449,4448,4447) addtime desc ,id desc LIMIT 0 , 18 で並べ替えます
このままでは調べられない。 addtime による順序を削除し、ID のみで並べ替えます。知ることができます。
id が含まれていない「記事」から id、cid、title、keywords、hits、addtime を選択します (4454,4453,4452,4451,4450,4449,4448,4447) id desc LIMIT 0, 18 で並べ替えます

私はもう一度 あなたのデータがなければ、あなたの一方的な話を聞くだけで、どうすればよいかわかりますか?

あなたのデータを持っていないので、一方的な話を聞くだけです。


わかりました。聞かなかったとき。

どこで演奏しましたか? phpまたはmysqlクライアント?

どこで演奏しましたか。 phpまたはmysqlクライアント?


mysql クライアント。以前は5.1でした。その後、スペースが変更されました。 6.0です。それからデータを入手しました。そこで、以前の 5.1 に 6.0 の新しいデータを追加して試してみました。それを知ることができるのです。バージョンの問題かどうかはわかりません

ID が (4454,4453,4452,4451,4450,4449,4448,4447) にない「記事」から id,cid,title,keywords,hits,addtime を選択し、 id が null ではありません addtime desc ,id desc LIMIT 0 , 18 で並べ替えます。これを試してみてください

mysql に not in というバグがあるようです。以前に遭遇したことがあります。direct not in (values) クエリの結果は 0 です。これを試すことができます:
ID フィールドを 1 つだけ持つ ID などの新しいテーブルを作成します。4451、4450、4449 を入力します。 ,4448,4447 が挿入され、次のようにクエリします:
select id,cid,title,keywords,hits,addtime from `Articles` where id not in (select id from ids) order by addtime desc ,id desc LIMIT 0 , 18 ;
これは以前にやったことがあります。お役に立てれば幸いです

たぶんデータを制限する順序で並べ替えることもできます

in フィールドには null 値を含めることはできません。つまり、フィールドに格納されているテーブルから * を選択しますselect filed1 from table1 where contidtion)、ここで filed1 は null 値を持つことはできません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。