我想知道是否可以根據某些變量值以優雅的方式縮短查詢。mysql - if value = 0縮短語句的位置
例如:我有一個名爲值和$var = 0
我想發出一個查詢,看起來像這樣:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
但是煥的是$ var = 1我想送一個這樣的查詢:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100 AND id = '$var'";
因此,根據$ var的值,我想執行其中一個查詢。它們只與最後一個表達不同。 我發現了兩種可能的解決方案,但它們並不優雅,我根本不喜歡它們。
一個是在PHP製作:
if ($var == 0) {
$query_without_second_expression
} else {
$query_with_second_expression
}
二是在MySQL製作:
SELECT WHEN '$var' <> 0 THEN id, name, quantity
FROM products WHERE quantity > 100 AND id = '$var' ELSE id, name, quantity
FROM products WHERE quantity > 100 END
,但我不喜歡它 - 每一個想法在一些whay雙打查詢。我可以做這樣的事嗎?
SELECT id, name, quantity
FROM products WHERE quantity > 100
CASE WHEN $var <> 0 THEN AND id = '$var'
它短得多,並且在需要時增加了一部分查詢。當然,真正的查詢要複雜得多,而且簡短的陳述也是真正的預期。任何人有想法?
我正在處理這個問題,但是請刪除原始'$ query'中的'AND id = $ var'部分。 – 2012-04-10 14:26:44
woops ..一些複製粘貼錯誤..完成 – 2012-04-10 14:33:57
不錯,我已經提出了您的答案。 – 2012-04-10 14:35:24