带聚合函数的Mysql case语句(仅在聚合有效时使用)
我一直在使用这个查询,直到我意识到如果表是空的,带聚合函数的Mysql case语句(仅在聚合有效时使用),mysql,Mysql,我一直在使用这个查询,直到我意识到如果表是空的,max不起作用。我检查用户的位置,然后插入一个位置更高的行。如果没有具有适当用户id的行,我如何设置插入位置为1的行?我试图做一个case语句,但没有成功,我被Mysql语法淹没了 以下是原件 $stmt = $dbh->prepare(" insert into dashboard_data (position, user_id) select max(posit
max
不起作用。我检查用户的位置
,然后插入一个位置更高的行。如果没有具有适当用户id的行,我如何设置插入位置为1的行?我试图做一个case语句,但没有成功,我被Mysql语法淹没了
以下是原件
$stmt = $dbh->prepare("
insert into
dashboard_data
(position, user_id)
select
max(position) + 1,
:userid
from
dashboard_data
where
user_id = :userid
");
下面是我在案例陈述中被误导的尝试
insert into
dashboard_data
(position, user_id)
select
case
when exists
max(position)
then
max(position) + 1
else
1
end case,
:userid
from
dashboard_data
where
user_id = :userid
您可以使用IFNULL,这将允许您用其他内容替换NULL值
您可以使用IFNULL,这将允许您用其他内容替换NULL值
您可以使用IFNULL,这将允许您用其他内容替换NULL值
您可以使用IFNULL,这将允许您用其他内容替换NULL值 使用
coalesce()
:
使用合并()
:
使用合并()
:
使用合并()
:
工作得很好,我让它与10行垃圾一起工作,但这使它下降到1。工作得很好,我让它与10行垃圾一起工作,但这使它下降到1。工作得很好,我让它与10行垃圾一起工作,但这使它下降到1。工作得很好,我让它处理10行垃圾,但这使它降到了1.+1,我已经使用了@marshall的答案,但它仍在工作。@CraigPatrickLafferty Coalesce如果有一系列可能的空值,则效果更好,否则它们的操作方式类似。我同意,不过我碰巧只有一个可能的价值。我以后一定会使用它。+1来自我,已经使用了@marshall的答案,但它仍然有效。@CraigPatrickLafferty Coalesce更好,如果你有一系列可能的空值,否则它们的操作类似。我同意,不过我碰巧只有一个可能的价值。我以后一定会使用它。+1来自我,已经使用了@marshall的答案,但它仍然有效。@CraigPatrickLafferty Coalesce更好,如果你有一系列可能的空值,否则它们的操作类似。我同意,不过我碰巧只有一个可能的价值。我以后一定会使用它。+1来自我,已经使用了@marshall的答案,但它仍然有效。@CraigPatrickLafferty Coalesce更好,如果你有一系列可能的空值,否则它们的操作类似。我同意,不过我碰巧只有一个可能的价值。我以后一定会用这个。
insert into dashboard_data(position, user_id)
select coalesce(max(position), 0) + 1,
:userid
from dashboard_data
where user_id = :userid;