在SQL查询中,如果条件存在,则选择该条件而不是其他任何条件

时间:2014-01-16 08:46:43

标签: mysql sql

抱歉,我不知道如何把标题写成文字。以下是我的代码。

SELECT DISTINCT association.NamaBadan,
    (
        CASE 
            WHEN type = 5
                THEN 'Batal'
            WHEN NamaBadan LIKE '%BATAL%'
                THEN 'Batal'
            ELSE 'Sah'
            END
        ) AS STATUS
FROM association
LEFT JOIN tindakan
    ON association.assoc_id = tindakan.assoc_id

它返回下表:

query result

正如你所看到的那样,“perseketuan草地马来西亚马来西亚”有重复的结果,下一个专栏的结果不同,其中一些草坪碗是'sah',有些是'batal'。

这是因为tindakan表中有多个条目。类型不是5的条目。例如,tindakan表中的草坪碗上有两个条目。一个是5型,另一个是4型。

由于我的查询声明类型5 = Batal而其他是= Sah,查询输出草坪碗的状态。

如何选择'batal'而不是'sah'。

这样的东西

IF条件类型= 5 EXISTS,然后选择此条件。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Group by子句或order by子句为您排序结果。

然后你可以试试这个:

SELECT association.NamaBadan,
    (
        CASE 
            WHEN type = 5
                THEN 'Batal'
            WHEN NamaBadan LIKE '%BATAL%'
                THEN 'Batal'
            ELSE 'Sah'
            END
        ) AS STATUS
FROM association
WHERE STATUS LIKE '%Batal%'
LEFT JOIN tindakan
    ON association.assoc_id = tindakan.assoc_id

希望它有所帮助。

答案 1 :(得分:0)

可能只使用带有MIN的GROUP BY状态: -

SELECT association.NamaBadan,
    MIN(
        CASE 
            WHEN type = 5
                THEN 'Batal'
            WHEN NamaBadan LIKE '%BATAL%'
                THEN 'Batal'
            ELSE 'Sah'
            END
        ) AS STATUS
FROM association
LEFT JOIN tindakan
    ON association.assoc_id = tindakan.assoc_id
GROUP BY association.NamaBadan

答案 2 :(得分:0)

通过以下查询解决

SELECT DISTINCT association.NamaBadan,
    (
        CASE 
            WHEN type = 5
                THEN 'Batal'
            WHEN NamaBadan LIKE '%BATAL%'
                THEN 'Batal'
            ELSE 'Sah'
            END
        ) AS STATUS
FROM association
LEFT JOIN tindakan
    ON (association.assoc_id = tindakan.assoc_id AND tindakan.type = 5)