2014-11-05 22 views
0

所以我試圖打印來自我的數據庫的所有評論,但只有當他們已被批准。只執行SELECT語句如果有東西

我最近聽說你可以在你的SQL中使用if語句,但我不確定它是如何工作的。

這是我的嘗試:

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

它應該只執行該語句IF 'approved' = 1

我可以做這樣的事情嗎?還是它的方式?

+0

這完全不是IF()語句的用處。他們不能在結果集中包含/排除記錄。這就是爲什麼有'where'條款。他們所能做的就是修改結果集中特定FIELD的值。 – 2014-11-05 20:18:43

+0

首先在數據庫的表格中有一列,您可以查看哪些評論被批准?或者它是外部SQL的參數? – CiucaS 2014-11-05 20:20:41

回答

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

或者我錯過了什麼?

+0

這就是我會想到的! – Diane 2014-11-05 20:21:22

+0

我不敢相信我沒有想到!完美的作品。 – PinkySmartass 2014-11-05 20:58:50

+0

@PinkySmartass有時最明顯的可能是最難看的! :) – Fred 2014-11-05 21:14:58

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'時,它仍然會執行select – Fred 2014-11-05 20:21:28

0

我相信您在尋找DECODECASE運營商,因爲它們是IF/ELSE聲明的SQL等效項。