2016-04-20 2 views
1

У меня есть таблица вроде этого:Как я могу проверить поле перед выбором?

// 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; 
} 

Но я хочу, чтобы сделать это чисто-SQL.

+0

вы можете использовать 'IF' здесь –

ответ

4

Вы можете использовать if, которое эквивалентно case выражения в MySQL.

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

Вы можете использовать CASE заявление:

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

Как я прокомментирую использование IF Условие.

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

Что случилось с простой

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

Вы просто закодировать свой результат обработки ожидать возможность получения строки не возвращается, и это говорит вам человек не должен быть виден, и более того, что он ничего не возвращает о них

+0

. Каково использование возвращаемого NULL в столбце' name'. Null абсолютно ничего не говорит о том, что возвращение результатов NO не говорит вам – RiggsFolly

+0

Посмотрите, у меня есть сайт, такой как SO, плюс мой сайт имеет свойство, которое позволяет пользователям скрывать свои имена под своими вопросами. Также у меня есть запрос для получения вопросов и всех его ответов, так или иначе, я знаю, что ваш запрос не полезен для меня, я думаю, что моя структура таблицы в вопросе не является хорошим примером для реальности. – stack

Смежные вопросы