我有一个表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