2011-10-28 2 views
1

テーブル "batch"からカラム "batchinstructor"を選択するクエリを作成しようとしていますが、batchname = "$ batchname"で、 "batchid"の値は "$ batchid "ここで書かない方法

私は次のように書くことができましたが、明らかに間違っています。私のために親切に修正してください。 batchidがテーブルにNULLであれば、これは動作しないこと

SELECT batchinstructor 
FROM batch 
WHERE batchname='$batchname AND batchid is not= '$batchid' 
+0

'NOT(A = B)'は 'A <> B'と同等です...どんな場合でも[MySQLオペレータ](http://dev.mysql)を見てください。 com/doc/refman/5.0/ja/comparison-operators.html)。そして*プレースホルダ*を使用してください。(あなたはインジェクション攻撃を一貫して避けてください) –

答えて

3
SELECT batchinstructor 
FROM batch 
WHERE batchname='$batchname' and batchid <> '$batchid' 
2
SELECT batchinstructor 
FROM batch 
WHERE batchname='$batchname' and batchid <> '$batchid' 

または

SELECT batchinstructor 
FROM batch 
WHERE batchname='$batchname' and batchid != '$batchid' 

は注意してください。そのため、チェック 'NULL <> 1'が実際にはfalseを返し、バッチIDがNULLのレコードを返すので、IS NOT NULLを使用してチェックする必要があります。これは、標準SQLで

SELECT batchinstructor 
FROM batch 
WHERE 
    batchname='$batchname' and 
    (batchid is null or batchid != '$batchid') 
+1

'!='は* standard * SQLではないことに注意してください(ただし、MySQLでは受け付けています)。 –

+0

確かに、これはMySQLの質問です。私はむしろ '<>'を使いますが、 '!='を使う人もいるので、その意味を知っておくと便利です。 :)追加ありがとう。 – GolezTrol

2
SELECT batchinstructor 
    FROM batch 
WHERE batchname='$batchname and batchid <> '$batchid' 

:あなたはNULLレコードを持っている場合は、にクエリを変更する必要があります。いくつかのSQL方言は使用するでしょう

SELECT batchinstructor 
    FROM batch 
WHERE batchname='$batchname and batchid != '$batchid' 
+0

+1 '!='が非標準であることを指摘するために(MySQLでは有効ですが)。 –

関連する問題