是否有“更好”的方法来重写SELECT多个列使用相同CASE WHEN条件的子句,以便条件只检查一次?
请参阅下面的示例。
SELECT
CASE testStatus
WHEN 'A' THEN 'Authorized'
WHEN 'C' THEN 'Completed'
WHEN 'P' THEN 'In Progress'
WHEN 'X' THEN 'Cancelled'
END AS Status,
CASE testStatus
WHEN 'A' THEN authTime
WHEN 'C' THEN cmplTime
WHEN 'P' THEN strtTime
WHEN 'X' THEN cancTime
END AS lastEventTime,
CASE testStatus
WHEN 'A' THEN authBy
WHEN 'C' THEN cmplBy
WHEN 'P' THEN strtBy
WHEN 'X' THEN cancBy
END AS lastEventUser
FROM test
Run Code Online (Sandbox Code Playgroud)
在非 sql 伪代码中,代码可能如下所示:
CASE testStatus
WHEN …Run Code Online (Sandbox Code Playgroud) 在许多一对多(数据模型)维基百科的文章使用作者和图书的例子:
例如,将 A 视为作者,将 B 视为书籍。一个作者可以写几本书,一本书可以由几个作者写。
在关系数据库管理系统中,这种关系通常是通过关联表(也称为交叉引用表)来实现的,例如,AB 具有两个一对多关系 A -> AB 和 B -> AB。在这种情况下,AB 的逻辑主键由两个外键(即 A 和 B 的主键的副本)形成。
有了约束,你会如何执行一本书必须有至少一个作者?
笔记: