我在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
我收到此错误:
#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
答案 0 :(得分: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
如果有其他语言,您可以添加条件
SELECT ....
FROM ....
WHERE a.uri = '...' AND d.language_code IN ('EN', 'DE')
ORDER BY ...
LIMIT 1
答案 1 :(得分:1)
不要在EXISTS关键字之前使用括号,因此它应该是 - >如果存在(选择.....