如果我要使用某些MySQL,例如:
$stmt = $conn->prepare("SELECT SUM(`num1`) + SUM(`num2`) FROM database.table WHERE `id` = :id");
$stmt->bindParam(':id', $ident, PDO::PARAM_INT, 11);
$stmt->execute();
$sum2 = $stmt->fetchAll();
并假设num1
的相应值为20且num2
为空,我应该期望收到$ sum2 [0] [0]值为20还是null?
同样在使用SUM时,准备好的选择是否应显示为:
$stmt = $conn->prepare("SELECT SUM(`num1` + `num2`) FROM database.table WHERE `id` = :id");
或者这不是特别重要吗?
答案 0 :(得分:1)
NULL
会忽略NULL
个值。因此,当所有值为NULL
时,它只返回NULL
。
另一方面,当您添加两个数字时,如果NLLL
为NULL
,则结果为sum(num2)
。
因此,在第一个查询中,如果您只有一行,则结果为NULL
,因为NULL
为NULL
且添加的结果为NULL
在第二种情况下 - 有一行 - 那么该值也将是<div class="jumbotron" style="background-image: url('http://image.url/he.png');">
<h2>Hello Heading Here</h2>
<p>Some Paragraph Stuff Here</p>
</div>
。但是,对于多行,最终会忽略其中任何一列具有{{1}}值的行。
答案 1 :(得分:1)
使用MySQL <localhost> REMOTE_MODULE mysql_db name=test_db state=present
<localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037 && echo $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037']
<localhost> PUT /var/folders/nw/2vnhg_gj77v_cyfv0p1vdfj80000gn/T/tmpK3DT_j TO /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/mysql_db
<localhost> EXEC ['/bin/sh', '-c', u'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/mysql_db; rm -rf /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/ >/dev/null 2>&1']
failed: [localhost] => {"failed": true}
msg: the python mysqldb module is required
,因为if
+ SUM(any)
= NULL
NULL
或使用那样: -
IF(num1 IS NULL,0,num1)
IF(num2 IS NULL,0,num2)
或使用SELECT IFNULL(SUM(num1), 0)
IFNULL
或使用IFNULL(SUM(num1), 0)
COALESCE