我有这3栏:
当我使用此查询时:
ORA-00918: column ambiguously defined
即使我的表格中不存在where_clause
select_list
,我也会获得1条记录。我实际上期待没有回复记录。
如何根据SELECT "code", "desc", "lt_status_uuid" FROM "product_info"
WHERE
"lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
"desc" ILIKE
'%nk%' OR "code" ILIKE '%nk%';
进行查询以及是否存在; lt_status_uuid
会触发吗?
提前致谢。
答案 0 :(得分:4)
由于AND
和OR
的优先顺序,您需要括号。 AND
具有更高的优先级,并首先进行评估。因此,您的代码被解释为
SELECT "code", "desc", "lt_status_uuid" FROM "product_info"
WHERE
("lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
"desc" ILIKE
'%nk%') OR "code" ILIKE '%nk%';
添加括号可澄清您的要求,以便评估顺序符合您的实际需要:
SELECT "code", "desc", "lt_status_uuid" FROM "product_info"
WHERE
"lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
("desc" ILIKE
'%nk%' OR "code" ILIKE '%nk%');