回答

收藏

WHERE条件下的SQL IF ELSE / CASE子句

技术问答 技术问答 112 人阅读 | 0 人回复 | 2023-09-12

我有一个很大的MySQL语句,通过php foreach每个循环都通过union0 f/ h# Q4 q; I8 ]* }
all连接到以前的循环。我将把句子简化为问题的核心,如果有必要,我当然可以在未来添加更多的细节。. M9 ^4 D$ i4 e6 w/ h
我有这张桌子5 x, _5 o) w: B7 ~+ ^
    -------- ----------- ----------- |   ID   |   LANG    |   TITLE   | -------- ----------- ----------- |   1    |    EN     |   T-A     | -------- ----------- ----------- |   1    |    FR     |   T-A     | -------- ----------- ----------- |  2     |    FR     |   T-B     | -------- ----------- ----------- |  3    |    DE     |   T-C     | -------- ----------- ----------- |  3    |    EN     |   T-C     | -------- ----------- ----------- 我想在SQL SELECT中写一个 WHERE    条件,该条件应显示 每个ID最多一个结果    。但是,仅当LANG为FR或EN时,, a3 \/ C5 B& n, L) I2 A; V( ^
它应该显示结果。最重要的是,优先使用FR,    并且仅当ID没有可用的FR应显示时间EN作为替代品。因此,结果如下所示。
4 o+ W- {  l- X' h7 {( E    -------- ----------- ----------- |   ID   |   LANG    |   TITLE   | -------- ----------- ----------- |   1    |    FR     |   T-A     | -------- ----------- ----------- |  2     |    FR     |   T-B     | -------- ----------- ----------- |  3    |    EN     |   T-C     | -------- ----------- ----------- 我曾尝试使用IF-ELSE / CASE我自己建一些东西,但我对SQL经验不是很丰富,所以会很感激。
6 S( W7 r8 T; C+ h我试过简化SQL就像: P" i& l# a" O1 B( V) K* S. ]" v
SELECT * FROM `table` WHERE `table`.`ID` = 1IF `table`.`LANG` = 'FR' BEGIN  AND `table`.`LANG` = 'FR' ENDELSEBEGIN  AND `table`.`LANG` = 'EN' ENDunion all SELECT * FROM `table` WHERE `table`.`ID` = 2IF `table`.`LANG` = 'FR' BEGIN  AND `table`.`LANG` = 'FR' ENDELSEBEGIN  AND `table`.`LANG` = 'EN' ENDunion all SELECT * FROM `table` WHERE `table`.`ID` = 3IF `table`.`LANG` = 'FR' BEGIN  AND `table`.`LANG` = 'FR' ENDELSEBEGIN  AND `table`.`LANG` = 'EN' END网站说明我可能不会ORDER BY与LIMIT 1结合使用任何结构,因为我必须通过每个循环php将SQL循环多次。0 ^7 s$ [9 ~. M1 a# A
编辑: 对我    有用的 解决方案
) _9 Y! U) B( T1 m) Y$ e( N$ q! {  bSELECT * FROM `table1`WHERE ID = 1AND lang = 'FR'OR (lang = 'EN' AND ID NOT IN (SELECT ID FROM table1 WHERE lang = 'FR)               / L* P2 O! M* b' B! k/ o3 q+ j
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则