我正在尝试做这样的事情
伪代码:
SELECT a.OPERATION, b.NAME
FROM OPERATIONS a, NAMES b, IDENTIFIERS c
WHERE
if (a.OPERATION='upload') {
b.ID=c.ID_UPLOAD
}else {
b.ID=c.ID_DOWNLOAD
}
我知道我不能在 WHERE 子句中添加 CASE 语句。有人知道怎么做吗?
可以在连接的ON
子句中使用CASE
表达式:
SELECT o.OPERATION, n.NAME
FROM OPERATIONS o
INNER JOIN NAMES n ON n.? = o.?
INNER JOIN IDENTIFIERS i
ON n.ID = CASE o.OPERATION WHEN 'upload' THEN i.ID_UPLOAD ELSE i.ID_DOWNLOAD END
将?
占位符替换为与NAMES
OPERATIONS
相关的列的名称。