比较mysql查询中的字段

时间:2011-11-13 13:29:12

标签: mysql

我如何使用MYSQL查询中的if语句返回yes如果是真的话no如果不是?

参见示例:

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

我正在尝试这样的事情,但没有成功

4 个答案:

答案 0 :(得分:1)

您可以使用case功能:

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

虽然if功能也应该有效。你可以发布完整的查询吗?

答案 1 :(得分:1)

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

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

答案 2 :(得分: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)

正是我所期望的(以及阅读文档后应该注意的事项)。它仍然不适合你吗?

答案 3 :(得分:1)

请参阅http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

SELECT CASE  WHEN table_name.field_name_value = 1 THEN 'yes'
   ELSE 'no' END;