Table1: Students
ID Name EternalToken
200901212 Joe xxxxxx
200809922 David yyyyyy
201009122 Chris zzzzzz
Table2: Banned
ID StudentID
1 200901212
我想选择所有学生并显示一个附加字段,该学生通过隐藏EternalToken来表明该学生已被禁止
SELECT * FROM Students s
LEFT JOIN Banned b
ON s.ID = b.StudentID
这将同时显示两个表。但是,我希望结果是这样的:
ID Name EternalToken Banned
200901212 Joe NULL 1
200809922 David yyyyyy 0
201009122 Chris zzzzzz 0
只有被禁止的学生才可以 EternalToken = NULL
请注意,这只是我要实现的目标的一个示例,并不完全是我在做什么。学生和取缔只是一个例子,我知道这不是多对多的关系,所以我可以在一张桌子上就可以做到。但是从技术上回答这个问题将极大地帮助我实现灵活的解决方案。
您可以使用以下查询:
SELECT
s.ID,
s.Name,
CASE WHEN b.StudentID IS NOT NULL THEN NULL ELSE s.EternalToken END AS EternalToken,
CASE WHEN b.StudentID IS NULL THEN 0 ELSE 1 END AS Banned
FROM Students s
LEFT JOIN Banned b
ON s.ID = b.StudentID;
请注意,这与该COALESCE
功能相反。COALESCE
检查一个值并返回一个备用值NULL
。CASE
令牌的上述表达式检查值是否不是 NULL
,NULL
在这种情况下返回,否则显示永恒的令牌值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句