2011-11-13 76 views
0

如何在MYSQL查询中使用if语句返回yes如果为真,如果不是则返回no比较mysql查询中的字段

见例如:

IF(table_name.field_name_value = 1, 'yes','no') AS active

我想是这样的,但没有成功

+0

你所说的 “_with没有success_” 意思?你想说“_这不是working_”? – Tadeck

+0

请告诉我们它是如何工作的,以及预期的结果是什么,如果你想让你的问题得到解决,请。 – Tadeck

+0

@Tadeck,当我打印活动时它不显示任何东西 – revo

回答

1

documentation on IF() function

mysql> SELECT IF(1<2,'yes','no'); 
     -> 'yes' 

所以,基本上,语法是如上所述。

编辑:

你是在说我的例子是不正确。因此,我为您提供一个证明(证明我上面提到的文档中的示例):

我有一个表,其中包含uid列,其中包含用户的ID。该表是某个站点上数据库的一部分(与此无关)。当我提出以下查询:

SELECT `uid`, IF(`uid`=3, 'yes', 'no') AS `active` FROM `mysite_users`; 

我收到以下结果:

+-----+--------+ 
| uid | active | 
+-----+--------+ 
| 0 | no  | 
| 1 | no  | 
| 3 | yes | 
| 8 | no  | 
| 9 | no  | 
| 10 | no  | 
| 11 | no  | 
| 12 | no  | 
| 13 | no  | 
| 14 | no  | 
| 15 | no  | 
+-----+--------+ 
11 rows in set (0,00 sec) 

这是我希望什么(什么应该阅读文档后预期)。它还不适合你吗?

+0

我试图比较一个字段值与静态数字,正如我上面所说。我的例子是不正确的,所以你的! – revo

+0

@Revo:这不是我的例子,它是来自文档**的一个**示例(请参阅我的答案中的链接页),那么它怎么会不正确?你有没有检查过它? – Tadeck

+0

问题是使用** AS **! – revo

1

可以使用case功能:

select case 
    when table_name.field_name_value = 1 then 'yes' 
    else 'no' 
    end case as active 
    from table_name 

虽然if功能也应工作。你能发布完整的查询吗?

1

你可以在mysql查询中使用CASE。 像

 
CASE WHEN table_name.field_name_valud = 1 THEN 'Yes' ELSE 'No' END As active