PL/SQL 如何在同一查询中为字段值添加 WHERE 子句?



我正在尝试做这样的事情

伪代码:

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

?占位符替换为与NAMESOPERATIONS相关的列的名称。

最新更新