1

でクエリがありますNOT IN。MySQLはサポートしていないと聞きましたがNOT IN、書き直す方法がわかりません。

私の質問は:

SELECT * FROM quests
  WHERE id NOT IN ('" .$quest_completed. "') 
  AND location=" .$location_id. "
  AND (follows=0 OR follows IN ('" .$quest_completed. "')) 
  ORDER BY title

例えば:

SELECT * FROM quests 
WHERE id NOT IN (6,21) AND 
  location=8 AND 
  (follows=0 OR follows IN (6,21))
ORDER BY title

指定したときに行ID6が返されますWHERE id NOT IN 6

4

3 に答える 3

1

変数の周りにアポストロフィを使用しているため、実際に実行されているクエリは、ではなく、で$quest_completedある可能性が高いようです(これはあなたが望むものだと思いますか?)。NOT IN ('6,21')NOT IN (6,21)

違いは、最初のバージョンはid文字列と等しくないレコード'6,21'を返すのに対し、2番目のバージョンは数値でもid数値でもないレコードを返すことです。621

于 2012-04-27T01:04:20.787 に答える
0

MySQLは問題なくサポートNOT INします。制限は、次のような特定の場合にのみ適用されます。MySQLの「NOTIN」クエリ

于 2012-04-27T00:58:40.133 に答える
0

NOT INは、次のような論理NOT(何らかの条件)として解釈することもできます。

NOT ID in ( 'A', 'B', 'C', 'D' )

したがって、書かれたとおりに問題が発生した場合は、交換してみてください...

于 2012-04-27T01:06:20.873 に答える