sql - 在 SQL 查询输出中包括没有值的行
问题描述
在我的数据库中运行以下查询SQL SERVER 2016
:
SELECT
u.idnumber,
gi.idnumber AS code,
gg.finalgrade AS grade
FROM
grades AS gg
INNER JOIN grade_items AS gi ON gg.itemid = gi.id
INNER JOIN users AS u ON gg.userid = u.id
WHERE gi.idnumber IN ('436','434','313','002','135')
AND (u.idnumber = 'JohnBrown-xyz123);
给了我这个结果:
-------------------------
idnumber code grade
-------------------------
John12558 313 96
John12558 135 83
如何为所有 5 个 gi.idnumber 包含一行,包括没有等级的行?
-------------------------
idnumber code grade
-------------------------
John12558 436
John12558 434
John12558 313 96
John12558 002
John12558 135 83
数据库表:
用户
身份PK
Grade_items
身份PK
等级_等级
Grade_grades.itemid FK (grade_items)
grade_grades.userid FK(用户)
解决方案
您可以使用value
这样的构造:
select tt.idnumber,
t.idnumber AS code,
tt.grade
from (values ('436'), ('434'), ('313'), ('002'), ('135')) t (idnumber)
left join (select
u.idnumber,
gi.idnumber AS code,
gg.finalgrade AS grade
from grades AS gg
inner join grade_items AS gi ON gg.itemid = gi.id
inner join users AS u ON gg.userid = u.id
where u.idnumber = 'JohnBrown-xyz123') tt on left(tt.code, 3) = t.idnumber
如果,idnumber是数字类型,那么你不需要使用' '
.
推荐阅读
- c# - 验证 xamarin.forms 选择器
- javascript - React+JavaScript 如何在 React 中创建具有所有给定字段的对象
- angular - 无法在 Azure 静态 Web 应用预览中保护路由
- keycloak - 带有“授权码”流程的 Keycloak 自定义登录页面
- go - 除了 $GOROOT 和 $GOPATH 包“roots”还有哪些来源?
- qr-code - AGV(自动导引车)中的二维码识别
- ios - Swift - 如何运行 x% 的函数?
- javascript - 是否可以使用 javascript 过滤 wordpress 查询?
- arrays - 在 Fortran 中,从数组中随机选择非零元素的最佳方法是什么?
- bash - cronjobs:每周/每月/每年运行时每天运行“除了”