我和我一样在同一条线上看过很多问题,但它们与我的问题并不完全相同。
这是我的疑问:
insert into`quotes`(`QuoteID`,`QuoteRequestID`,`Number`,`UserID`,`Viewed`,
`_Latest`)
select uuid(),uuid(),
ifnull(max(`quotes`.`Number`),0)+1,'Some User ID',1,1
from`quotes`
join`quoterequests`using(`QuoteRequestID`)
where`quoterequests`.`UserID`='Some User Other ID';
这就是我得到的错误:
错误代码:1048。列'QuoteID'不能为空
所以我的猜测是select语句没有返回任何内容,但是由于我在查询中使用max()
,这怎么可能呢?
果然,如果我删除insert
部分并且只运行select语句,那么我确实得到了预期的结果,新的UUID(绝对不是空值)和所有。这里发生了什么?这是MySQL的错误吗?我的MySQL版本是5.7.14;
修改
所以我想出如果我将select包装在另一个select中,它现在可以按预期工作了。不确定这是解决方案还是解决方法,但它确实让我的查询正常工作。
答案 0 :(得分:0)
看起来你可能有一些产生错误的触发器 - 这是我能想到的唯一解释。