如何在选择之前检查字段?

时间:2016-04-20 15:40:00

标签: php mysql sql if-statement

我有一张这样的表:

// Names
+----+--------+------------+
| id |  name  | visibility |
+----+--------+------------+
| 1  | Alex   | 1          |
| 2  | Jack   | 0          |
| 3  | Peter  | 1          |
+----+--------+------------+

我想选择name,但我需要在选择之前检查其visibility。换句话说,如果可见性为1,我希望它返回名称,如果可见性为null,则返回0。我怎么能在查询中做到这一点?

SELECT (check visibility here) AS name FROM Names WHERE id = :id;

我可以通过PHP这样做:

if ($result['visibility'] == 1) {
    $name = $result['name'];
} else {
    $name = null;
}

但我想通过pure-sql来做到这一点。

4 个答案:

答案 0 :(得分:4)

您可以使用CASE声明:

Select  Case When Visibility = 1 Then Name Else Null End As Name
From    Names
Where   Id = :id;

答案 1 :(得分:4)

您可以使用if,它相当于MySQL中的case表达式。

SELECT if(visibility=1,name,null) name FROM Names WHERE id = :id

答案 2 :(得分:2)

简单的

是错的
SELECT name FROM Names WHERE id = :id AND visibility = 1;

你只需要对你的结果处理进行编码,以期望没有返回任何行,并告诉你这个人不应该是可见的,而且更多的不会返回任何有关它们的信息

答案 3 :(得分:1)

我发表评论时使用IF条件。

SELECT IF(visibility=1, name, NULL) AS name FROM Names WHERE id = :id;