SQL - IF EXISTS - SELECT A - ELSE - SELECT B

Vol*_*cho 0 php mysql sql if-statement

我在php脚本中调用SQL.有时在"DE"中没有值,如果是这种情况我想从"EN"获得值

它应该是这样的,但它不是这样的

IF (EXISTS (SELECT epf_application_detail.description FROM epf_application_detail INNER JOIN app_uri ON epf_application_detail.application_id=app_uri.application_id WHERE app_uri.uri = '/ps-puzzle-daily-download-for-ipad-iphone-327103760.html' AND epf_application_detail.language_code = 'DE' LIMIT 1))
BEGIN
SELECT epf_application_detail.description FROM epf_application_detail INNER JOIN app_uri ON epf_application_detail.application_id=app_uri.application_id WHERE app_uri.uri = '/ps-puzzle-daily-download-for-ipad-iphone-327103760.html' AND epf_application_detail.language_code = 'DE' LIMIT 1
END
ELSE
BEGIN
SELECT epf_application_detail.description FROM epf_application_detail INNER JOIN app_uri ON epf_application_detail.application_id=app_uri.application_id WHERE app_uri.uri = '/ps-puzzle-daily-download-for-ipad-iphone-327103760.html' AND epf_application_detail.language_code = 'EN' LIMIT 1
END
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (EXISTS (SELECT epf_application_detail.description FROM epf_application_detai' at line 1 
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 7

这是另一种方式,

SELECT  d.description 
FROM    epf_application_detail d
        INNER JOIN app_uri a
            ON d.application_id = a.application_id 
WHERE   a.uri = '/ps-puzzle-daily-download-for-ipad-iphone-327103760.html'
ORDER   BY FIELD(d.language_code, 'EN', 'DE') DESC
LIMIT   1
Run Code Online (Sandbox Code Playgroud)

如果有其他语言,您可以添加条件

SELECT ....
FROM ....
WHERE a.uri = '...' AND d.language_code IN  ('EN', 'DE')
ORDER BY ...
LIMIT 1
Run Code Online (Sandbox Code Playgroud)