问题描述
SELECT ut1.*,IF NULL(ut2.status,0) status
FROM user_permissions ut1
LEFT JOIN
(SELECT * FROM user_permission_data WHERE user_id = 1)
ut2 ON ut1.id = ut2.options_id
ORA-00923: FROM keyword not found where expected
我尝试将FROM
关键字移到ut2
之后,但是仍然有问题。我在哪里弄错了?此查询有什么问题?为什么会出现这种错误?
解决方法
使用NVL(x1,x2)
合并空值。
SELECT
ut1.*,NVL(ut2.status,0) status
FROM user_permissions ut1
LEFT JOIN
(SELECT * FROM user_permission_data WHERE user_id = 1)
ut2 ON ut1.id = ut2.options_id
,
子查询是不必要的。我建议:
SELECT up.*,COALESCE(UPD.status,0) status
FROM user_permissions up LEFT JOIN
user_permission_data upd
ON up.id = upd.options_id AND upd.user_id = 1 ;
我还强烈建议您使用有意义的表别名(表名的缩写),而不要使用任意的,毫无意义的别名。