所以我試圖打印來自我的數據庫的所有評論,但只有當他們已被批准。只執行SELECT語句如果有東西
我最近聽說你可以在你的SQL中使用if語句,但我不確定它是如何工作的。
這是我的嘗試:
SELECT name, created, comment IF('approved' = 1) FROM table_example WHERE id = 3
它應該只執行該語句IF 'approved' = 1
。
我可以做這樣的事情嗎?還是它的方式?
所以我試圖打印來自我的數據庫的所有評論,但只有當他們已被批准。只執行SELECT語句如果有東西
我最近聽說你可以在你的SQL中使用if語句,但我不確定它是如何工作的。
這是我的嘗試:
SELECT name, created, comment IF('approved' = 1) FROM table_example WHERE id = 3
它應該只執行該語句IF 'approved' = 1
。
我可以做這樣的事情嗎?還是它的方式?
SELECT name, created, comment FROM table_example WHERE id = 3 AND approved = 1
或者我錯過了什麼?
這就是我會想到的! – Diane 2014-11-05 20:21:22
我不敢相信我沒有想到!完美的作品。 – PinkySmartass 2014-11-05 20:58:50
@PinkySmartass有時最明顯的可能是最難看的! :) – Fred 2014-11-05 21:14:58
你可以做這樣的事情:
SELECT name, created,
CASE
WHEN approved = 1 THEN comment
ELSE NULL
END as comment
FROM table_example
WHERE id = 3
你可以爲你想表明,如果註釋不批准的缺省值替換NULL。
當'approved = 1'' comment'只是'null'時,它仍然會執行select – Fred 2014-11-05 20:21:28
我相信您在尋找DECODE
和CASE
運營商,因爲它們是IF/ELSE
聲明的SQL等效項。
這完全不是IF()語句的用處。他們不能在結果集中包含/排除記錄。這就是爲什麼有'where'條款。他們所能做的就是修改結果集中特定FIELD的值。 – 2014-11-05 20:18:43
首先在數據庫的表格中有一列,您可以查看哪些評論被批准?或者它是外部SQL的參數? – CiucaS 2014-11-05 20:20:41