Mysql 表中不存在如何设置数据的默认值

Mysql 表中不存在如何设置数据的默认值,mysql,Mysql,我有一个mysql查询示例,用于从另一个表中获取用户的最新状态 你可以在这里看到: 因此,如果一个accountId存在于heat表中,它将获得最新状态,但如果accountId不存在于表中,则假定状态为-1 但是,当我尝试对不在heat表上的accountId运行查询时,它返回NULL而不是-1 我试图将IFNULL替换为IF或COALESCE,但它仍然会返回NULL,以解决您的问题: SELECT M.accountid,IFNULL(HS.status,-1) as status FROM

我有一个mysql查询示例,用于从另一个表中获取用户的最新状态

你可以在这里看到:

因此,如果一个accountId存在于heat表中,它将获得最新状态,但如果accountId不存在于表中,则假定状态为-1

但是,当我尝试对不在heat表上的accountId运行查询时,它返回NULL而不是-1


我试图将IFNULL替换为IF或COALESCE,但它仍然会返回NULL,以解决您的问题:

SELECT M.accountid,IFNULL(HS.status,-1) as status
FROM members M
LEFT JOIN 
(SELECT accountID,MAX(dateCreated) as MaxDate 
FROM Heat
GROUP BY accountID) H
ON M.accountID = H.accountID
LEFT JOIN Heat HS
ON H.accountId = HS.accountId AND H.MaxDate = HS.dateCreated
WHERE M.isDeleted != 1 
ORDER BY M.accountid ASC;
相同示例数据结构的演示基于查询中给出的列:


mySQL版本???很抱歉,我无法阅读关于发布查询的元数据。感谢您的提醒。注意,提供了一个编辑按钮。我可以询问我的查询的哪一部分出错了吗?尝试运行此查询,您将使用它生成状态列,您将知道这不会为显示为null的ID生成任何状态:选择IFNULLH.status,-1作为来自heat H JOIN SELECT accountId的状态,maxdate通过S.accountId=H.accountId和S.maxdate=H.DATECEATEDI上的accountId从heat组创建maxdate已在查询中进行更改,以获得所需的输出。您可以在这里查看:我自己认为您编写查询的方式不好。您编写的查询使用另一个select查询代替一个列来生成一个列,这可以通过单个查询轻松完成。我在这里遇到了查询问题,原因是我的记录中dateCreated有重复值,因此当我尝试运行查询时,它返回了一个错误。。ER_SUBQUERY_NO_1_ROW:SUBQUERY返回超过1行,我已检查并发现您得到accountID-202004的2个状态值,可在以下链接中更正: