不在postgresql中不工作

不在postgresql中不工作,第1张

概述我没有按预期得到输出,因为 AND ta.task_status_type_id NOT IN ( 10 ) 不适用于以下查询. SELECT ta.task_id AS id, u.employee_id AS employee_id, ta.task_status_type_idFROM task_assignments AS ta, users 我没有按预期得到输出,因为
 AND ta.task_status_type_ID NOT IN ( 10 )

不适用于以下查询.

SELECT    ta.task_ID AS ID,u.employee_ID AS employee_ID,ta.task_status_type_IDFROM    task_assignments AS ta,users AS uWHERE    u.ID = ta.user_ID    AND ta.ID IN (                   SELECT                       max ( ta.ID ) OVER ( partition BY ta.task_ID ) AS ID                   FROM                       task_details AS td,task_assignments AS ta                   WHERE                       td.task_ID = ta.task_ID                       AND td.developer_employee_ID IS NulL                       AND ta.task_type_ID IN(6,7)                       AND ta.task_status_type_ID NOT IN ( 10 )                       AND ta.task_status_type_ID IN ( 9 )    );

请帮助解决错误.

一个有根据的猜测(缺乏更多信息):

如果涉及任何NulL值且测试值不在列表中,NOT IN(…)将返回NulL.但只有TRUE符合WHERE子句.

a NOT IN (b,c)

转变为:

a <> ALL ('{b,c}'::sometype[])

相当于:

(a <> b AND a <> c )

如果这些值中的任何一个(在运算符的任一侧)为NulL,则得到:

(NulL AND FALSE)

那是:

NulL

并且NulL在WHERE子句中等效于FALSE.只有TRUE才有资格.

众所周知,这会导致不熟悉tri-valued logic的用户不相信.

请改用IS DISTINCT FROMNOT EXISTS.或LEFT JOIN / IS NULL.

示例(更多猜测)

在这种特殊情况下,您根本不需要有罪的表达

SELECT ta.task_ID AS ID,u.employee_ID,ta.task_status_type_IDFROM   task_assignments taJOIN   users            u  ON u.ID = ta.user_IDWHERE  ta.ID IN (   SELECT max(ta.ID) AS ID   FROM   task_details     td   JOIN   task_assignments ta USING (task_ID)   WHERE  td.developer_employee_ID IS NulL   AND    ta.task_type_ID IN (6,7)-- AND    ta.task_status_type_ID IS disTINCT FROM 10 -- just cruft   AND    ta.task_status_type_ID = 9                 -- this Expression covers it   GROUP  BY ta.task_ID   )

如果您秘密使用要排除的值列表,可以与包含列表共享元素:

...     AND    (ta.task_status_type_ID IN ( ... )) IS NOT TRUE...

或者你清除了NulL值.或者您在包含和排除列表中避免使用常见元素.

总结

以上是内存溢出为你收集整理的不在postgresql中不工作全部内容,希望文章能够帮你解决不在postgresql中不工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存