重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

MySQL のJavaです。

パラメータに、iPara_food_idとiPara_kind_idを与え、

1)comment_textが、null か、空っぽで、
2)limit_date が最大、
3)のレコードを1件抽出したいのですが、

String strSQL =
"SELECT record_id, color_id FROM foods"
+ " WHERE"
+ " (food_id = " + 123455/*iPara_food_id*/ + ")"
+ " AND (kind_id = " + 1545334/*iPara_kind_id*/ + ")"
+ " AND (comment_text IS NULL) OR (LENGTH(comment_text) = 0)"
+ " AND (delete_flag = false)"
+ " ORDER BY limit_date DESC"
+ " LIMIT 1";



テーブルとソースを何度も見直したり、
値を変更してみたり、

パラメータの値を変更してみたり、

したのですが、

パラメータに、iPara_food_idとiPara_kind_id。
何を与えても、同じレコードを抽出してきます。

それは、30件ほどのレコードの中で、
日付が途中くらいのもので、comment_text が空の
ものです。

comment_textが空のレコードは、
2件あるのですが、

固定で抽出してくるレコードは、
日付の大きいほうです。

なぜ、パラメータが聞かないのでしょうか?

※上記、思い切って、むちゃくちゃな、数値を
 指定していますが、それでも、同じレコードを
 抽出してきます。

A 回答 (1件)

ANDとORを並べると、ANDの論理演算が優先します。



「comment_textが、null か、空っぽで」としたいのなら、
+ " AND ((comment_text IS NULL) OR (LENGTH(comment_text) = 0))"
としなければなりません。
    • good
    • 0
この回答へのお礼

そうでしたか、ご回答ありがとうございます。
初心者とはいえ、とてもお恥ずかしいです。

お礼日時:2015/07/17 18:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す