0

IN比較構文を使用してこれを行う方法を知りたいです。

現在のSQLクエリは次のとおりです。

select * from employee 
where (employeeName = 'AJAY' and month(empMonth) = month(curdate())) 
   or (employeeName ='VINAY' and month(empMonth) = month(curdate()))

比較機能を使って試してみましINたが、正しくセットできません。誰か助けてもらえますか?

select * from employee 
where employeeName in ('AJAY','VINAY') 
   and month(empMonth) = month(curdate()); // ERROR.

MySQLクエリで試しました。

ありがとう、シンドゥ

4

1 に答える 1

1

あなたのソリューションは、ほとんどの DBMS (データベース管理システム) に適しています。私の知る限り、MySQL では問題ありません。しかし、数年前、私は DB2 と「Focus」という別のより風変わりな DBMS で同様の問題を抱えていました。

多分これは助けることができます:

  • 完全な where ブロックを 1 組のブラケットに入れます。
  • このブロック内で、それぞれの比較を再び括弧のペアに入れます。
  • IN 比較を where ブロックの末尾に移動します。

これにより、例が次のコードに変換されます。

SELECT *
FROM employee 
WHERE (
    (month(empMonth) = month(curdate())
    AND
    (employeeName IN ('AJAY','VINAY')) 
);
于 2012-04-05T07:24:29.837 に答える