2014-11-05 3 views
0

Итак, я пытаюсь распечатать все комментарии из моей базы данных, но только если они были одобрены.Выполнять только инструкцию SELECT IF

Недавно я слышал, что вы можете использовать операторы if в своем SQL, но я не совсем уверен, как это работает.

Это то, что я пробовал:

SELECT name, created, comment IF('approved' = 1) FROM table_example WHERE id = 3 

Он должен выполнять только заявление IF 'approved' = 1.

Могу ли я сделать что-то подобное или это так?

+0

Это полностью не то, к чему относятся утверждения IF(). они не могут включать/исключать записи из вашего набора результатов. поэтому есть предложение 'where'. все, что они могут сделать, это изменить значение определенного поля в вашем результирующем наборе. –

+0

Прежде всего, есть столбец в таблице в вашей базе данных, где вы можете проверить, какие комментарии одобрены? Или это параметр из внешнего SQL? – CiucaS

ответ

3
SELECT name, created, comment FROM table_example WHERE id = 3 AND approved = 1 

Или я что-то не хватает ???

+0

Вот что я бы подумал! – Diane

+0

Не могу поверить, что я об этом не думал! Работает отлично. – PinkySmartass

+0

@PinkySmartass Иногда наиболее очевидным может быть труднее всего увидеть! :) – Fred

2

вы могли бы сделать что-то вроде этого:

SELECT name, created, 
    CASE 
     WHEN approved = 1 THEN comment 
     ELSE NULL 
    END as comment 
FROM table_example 
WHERE id = 3 

можно заменить NULL для значения по умолчанию вы хотите показали, если комментарий не утвержден.

+0

это все равно выполнит выбор, когда 'approved = 1'' comment' будет просто 'null' – Fred

0

Я считаю, что вы ищете операторов DECODE и CASE, поскольку они являются эквивалентом SQL инструкции IF/ELSE.

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