Mysql 如何使这个查询正确?
这是我的第一张桌子Mysql 如何使这个查询正确?,mysql,sql,Mysql,Sql,这是我的第一张桌子 Type LimitDays ----------------- leave 15 absent 15 vacation 15 这是我的第二张桌子 Name type UseDays --------------------------- Chuck leave 3 现在我想把这两个表连接起来。。然后像这样展示 Type LimitDays UseDays -----
Type LimitDays
-----------------
leave 15
absent 15
vacation 15
这是我的第二张桌子
Name type UseDays
---------------------------
Chuck leave 3
现在我想把这两个表连接起来。。然后像这样展示
Type LimitDays UseDays
--------------------------------
leave 15 3
absent 15 0
vacation 15 0
这是我已经做过的。。但是
SELECT
Leave,
Counter,
(SELECT SUM(LeaveTbl.NumDays) AS Expr1
FROM LeavetypTbl
INNER JOIN LeaveTbl ON LeavetypTbl.Leave = LeaveTbl.Leave
GROUP BY LeavetypTbl.Leave, LeavetypTbl.Counter) AS Expr1
FROM
LeavetypTbl AS LeavetypTbl_1
结果是错误的。哈哈,还是不能正确。结果是这样的
Type LimitDays UseDays
--------------------------------
leave 15 3
absent 15 3
vacation 15 3
我的回答假设您使用的是SQL Server。尝试使用以下查询:
SELECT t1.Type, t1.LimitDays, COALESCE(t2.UseDays, 0) as UseDays
FROM table1 t1 LEFT JOIN table2 t2 ON t1.type = t2.type
有两个关键部分。首先是使用左连接
,因为并非所有记录都存在于表2中。第二,如果左连接的右侧不存在值,则使用COALESCE
显示0,而不是NULL
这适用于您提供的数据,但如果其中一个表中有更多记录,则可能需要使用筛选或分组。如果您使用的是MySQL:
SELECT LeavetypTbl.Leave, LeavetypTbl.Counter, IFNULL(SUM(LeaveTbl.NumDays), 0)
FROM LeavetypTbl LEFT JOIN LeaveTbl ON LeavetypTbl.Leave = LeaveTbl.Leave
GROUP BY LeavetypTbl.Leave
伊玛,试试那个……tnx巴德!你在用什么?我在用MsSQL,先生。。