MySQL SELECT クエリで IF ステートメントを正しく使用するにはどうすればよいですか?

DDD
リリース: 2024-10-28 13:31:02
オリジナル
661 人が閲覧しました

 How to Use IF Statements Correctly in MySQL SELECT Queries?

MySQL SELECT クエリでの IF ステートメントの使用

この質問では、ユーザーは MySQL SELECT クエリ内で IF ステートメントを利用しようとしましたが、エラーです。問題を理解し、正しいアプローチを提供するために、MySQL の IF ステートメントの目的と制限について詳しく調べてみましょう。

WHERE 句での IF ステートメントの誤った使用法

このエラーは、IF ステートメントを使用して WHERE 句のフローを制御しようとしたときに発生します。 MySQL では、IF ステートメントは主にクエリの SELECT 部分で条件付きでデータを選択するために使用されます。 WHERE 条件を満たす行を決定するために使用することはできません。

SELECT クエリの IF ステートメントの適切な構文

WHERE 句で IF ステートメントを使用する代わりに、 SELECT ステートメント内で条件式を使用すると、特定の基準に基づいてさまざまな値を選択できます。例:

SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
FROM ...
WHERE ...
ログイン後にコピー

この例では、IF() 関数を使用して、SELECT 句内の JQ.COURSE_ID の値に基づいて異なる結果を選択します。

書き換えクエリ

エラーを修正するには、SELECT 部分内で条件式を使用するようにクエリを書き直す必要があります。次の変更されたクエリは、同じロジックを実現します。

SELECT J.JOB_ID,E.COMPANY_NAME,J.JOB_DESC,JT.JOBTYPE_NAME,J.COMPENSATION,ST.STATE_NAME,MC.METRO_CITY_NAME,I.INDUSTRY_NAME,
 J.JOB_CONTACT_PERSON,J.DT_INSRT,J.JOB_TITLE,J.JOB_EXP_DATE,
 CASE
 WHEN JQ.COURSE_ID=0 THEN
    CASE
    WHEN JQ.DEGREE_ID=0 THEN J.SKILLS
    ELSE JQ.DEGREE_ID
    END
 ELSE
    CASE
    WHEN JQ.DEGREE_ID=0 THEN J.SKILLS
    ELSE JQ.DEGREE_ID
    END
 END AS Conditional_Column
 FROM JOBS J 
 JOIN EMPLOYER E ON J.COMPANY_ID=E.COMPANY_ID 
 JOIN LOOKUP_JOBTYPE JT ON J.JOB_TYPE=JT.JOBTYPE_ID
 JOIN LOOKUP_STATE ST ON J.STATE_ID=ST.STATE_ID
 JOIN JOBS_LOCATION JL ON J.JOB_ID=JL.JOB_ID
 JOIN LOOKUP_METRO_CITY MC ON JL.METRO_CITY_ID=MC.METRO_CITY_ID
 JOIN LOOKUP_INDUSTRY I ON J.INDUSTRY_ID=I.INDUSTRY_ID 
 JOIN JOBS_QUALIFICATION JQ ON J.JOB_ID=JQ.JOB_ID 
 JOIN LOOKUP_DEGREE_QUALIFICATION LDQ ON LDQ.QUALIFICATION_ID = JQ.QUALIFICATION_ID
 WHERE  J.ACTIVE='Y' AND J.DT_INSRT > COALESCE(pEmailSntDt,DATE_SUB(SYSDATE(),INTERVAL 4 DAY))                        
GROUP BY J.JOB_ID ORDER BY J.DT_INSRT DESC;
ログイン後にコピー

SELECT 句内で CASE 式を使用することにより、クエリは条件を正しく評価し、WHERE 句内の IF ステートメントを必要とせずに適切な値を選択します。

以上がMySQL SELECT クエリで IF ステートメントを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!