0

我在 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 
4

2 回答 2

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
于 2013-07-11T15:18:46.050 回答
1

不要在 EXISTS 关键字之前使用括号,所以应该是 --> IF EXISTS (SELECT .....

于 2013-07-11T15:23:02.583 回答