>我有这样的表格:
// Names
+----+--------+------------+
| id | name | visibility |
+----+--------+------------+
| 1 | Alex | 1 |
| 2 | Jack | 0 |
| 3 | Peter | 1 |
+----+--------+------------+
我想选择 name
,但我需要在选择之前检查其visibility
。换句话说,我希望它在可见性1
时返回名称,如果可见性0
则返回null
。如何在查询中执行此操作?
SELECT (check visibility here) AS name FROM Names WHERE id = :id;
我可以通过PHP做到这一点,就像这样:
if ($result['visibility'] == 1) {
$name = $result['name'];
} else {
$name = null;
}
但我想通过纯sql来做到这一点。
您可以使用等效于 MySQL 中case
表达式的if
。
SELECT if(visibility=1,name,null) name FROM Names WHERE id = :id
您可以使用
CASE
语句:
Select Case When Visibility = 1 Then Name Else Null End As Name
From Names
Where Id = :id;
一个简单的
问题SELECT name FROM Names WHERE id = :id AND visibility = 1;
你只需要对结果处理进行编码,以期望不返回任何行的可能性,这告诉你这个人不应该是可见的,而且它不会返回任何关于他们的信息
正如我评论的那样,使用IF
条件。
SELECT IF(visibility=1, name, NULL) AS name FROM Names WHERE id = :id;