我有一個表y
其中有兩列a
和b
根據結果數量我可以將我的MySQL查詢重構爲一個查詢嗎?
的項目有:
a b
1 2
1 3
1 4
0 5
0 2
0 4
我想2,3,4如果我搜索欄a
1和5,2, 4如果我搜索欄a
。
所以,如果我搜索的東西,是在A,(1)我得到的那些行,如果有給定值沒有條目A,給我的「默認」(a
=「0」)
這是我怎麼會知道如何做到這一點:
$r = mysql_query('SELECT `b` FROM `y` WHERE `a` = \'1\';');
//This gives desired results, 3 rows
$r = mysql_query('SELECT `b` FROM `y` WHERE `a` = \'2\';');
//This does not give desired results yet.
//Get the number of rows, and then get the 'defaults'
if(mysql_num_rows($r) === 0) $r = mysql_query('SELECT `b` FROM `y` WHERE `a` = 0;');
所以,現在,它的充分的解釋,我怎麼做,在一個查詢和性能怎麼樣的關注?
使用最多的部分將是第三個查詢,因爲只有a
中的數值爲IF,您偏離默認值。
大。當談到存儲過程時,我完全無能爲力。 一般來說,我只會問,如果在存儲過程中執行它會比我上面提出的PHP版本更好。我的本能會說'是的,如果數據庫是在不同的服務器上,而不是其他'。 – 2008-09-20 15:16:56
存儲過程總是更好。其他人給出的解決方案都很好,但是,一般情況下,向客戶端發送儘可能多的信息以回報您所需的信息,因爲您需要的信息一般都很好,如果客戶端是單獨的計算機,則無關緊要比服務器 – 2008-09-20 18:59:18