当我在一系列内部联接之后发出SELECT查询询问特定表的所有值时,应用程序使用table_name抱怨我。*说它是“无效的标识符”。
SELECT value,
starting
FROM (
SELECT value,
starting,
ROW_NUMBER() OVER (PARTITION BY value ORDER BY starting DESC) as cnt
FROM #Table t
LEFT JOIN #Lookup l
ON l.starting < t.value
) a
WHERE cnt = 1
这就是我遇到的所有问题。
SELECT tab_a.*
FROM tab_a ta INNER JOIN tab_b tb
ON tab_a.foo = tab_b.foo
WHERE tab_a.bar LIKE 'a'
MINUS
SELECT tab_a.*
FROM tab_a ta INNER JOIN tab_b tb
ON tab_a.foo = tab_b.foo
WHERE tab_b.bar LIKE 'b';
我正在使用Oracle的服务器软件。
答案 0 :(得分:1)
以下是您的代码的相关部分:
WHERE tab_b.bar LIKE 'b';
SELECT tab_a.*
分号结束您的第一个查询。您的第二个查询不完整,因为它没有where子句。因此,错误。
答案 1 :(得分:1)
事实证明,我在查询中为表提供了别名。出于某种原因,当在查询中给出别名时,Oracle不会识别该表的原始名称,这是导致该问题的原因。
我的问题的一个简单解决方案是替换此
的所有实例 tab_a.*
用这个
ta.*
如果我要在FROM子句中为tab_a提供别名。
FROM tab_a ta