查询WHERE,AND&我喜欢

时间:2018-01-04 02:27:26

标签: sql database postgresql where

我有这3栏:

enter image description here

当我使用此查询时:

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会触发吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

由于ANDOR的优先顺序,您需要括号。 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%');