2013-06-12 120 views
2

所以我有一个相当长的复杂查询,但要点是查询的基本功能看起来像这样SELECT verification_id FROM verification_table有没有办法在SQL查询中执行条件逻辑?

verification_id返回一个0-3的整数。有没有办法在SQL查询中执行某些操作,如果verification_id为0,则返回一个字符串,如“new”,对于所有的4个verification_id都返回不同的字符串。

我能做到这一点通过PHP后端,但我想知道是否有办法通过MySQL的

+0

看看IF()这里:http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if你可以使用嵌套的IFs,像SELECT IF(STRCMP(verification_id ,'A'),'IS A',IF(STRCMP(verification_id,'B','IS B','IS NOT A NOR B')); – kiewic

回答

3
SELECT CASE 
     WHEN verification_id = 0 THEN 'new' 
     WHEN verification_id = 1 THEN 'something else' 
     ELSE 'error?' 
     END AS myvalue 
FROM verification_table 

这样的事情应该工作。

尽管您可能会考虑使用mysql ENUM字段类型,它基本上将文本字符串转换为数字,反之亦然。这是存储这些值的有效字段类型。

+0

'WHEN verification_id = 0'两次。错字? – Basic

+1

是...复制n贴魔鬼... –

6

你想要一个case语句来做到这一点。它可用于布尔条件语句以及多个结果之间的选择......

SELECT [Condition] 
    CASE WHEN TRUE THEN 'True' 
    ELSE 'False' 
END 
FROM [Table] 

注意,每个分支的返回类型必须是相同的 - 列只能是一种类型的

+0

我将是一个让你达到10k的人! – Sebas

+0

@Sebas Mighty亲切,谢谢:) – Basic

相关问题