Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在postgresql中为空_Postgresql_Isnull - Fatal编程技术网

在postgresql中为空

在postgresql中为空,postgresql,isnull,Postgresql,Isnull,我正在学习PostgreSQL,我需要知道以下条件是否有效。据我了解,不会的 但我的朋友告诉我,在博士后接受它是合乎逻辑的 请确认 select a.ename, a.dept_id from table a inner join table b on a.id = b.id where a.id is null; -- this condition is wrong as my understanding. 如果我的理解是错误的,请更正。这是正确的,但是如果您没有选择表b中

我正在学习PostgreSQL,我需要知道以下条件是否有效。据我了解,不会的

但我的朋友告诉我,在博士后接受它是合乎逻辑的

请确认

select a.ename,
       a.dept_id
from
table a
inner join table b
on a.id = b.id
where a.id is null;  -- this condition is wrong as my understanding. 

如果我的理解是错误的,请更正。

这是正确的,但是如果您没有选择表b中的任何内容,则不必进行内部联接,这只是一个建议,在这种情况下,内部联接的条件不符合逻辑,因为查询将不返回任何内容。 如果要获取“id”为null且等于另一个表的id的行,如果列或内部联接上的列的where条件为其他,则查询可能是正确的

SELECT a.ename, a.dept_id , b.something
FROM table_1 a inner join table_2 b 
ON a.id = b.id 
WHERE a.id IS NULL;

语法本身是正确的(即,假设您使用的是实际存在的表名和列名,则查询运行时不会出错),但除非您告诉我们您希望在该条件下实现什么,否则无法判断它是错误的还是正确的。此查询将始终返回空结果集。您想实现什么?
ID为NULL
是检查字段是否包含NULL的唯一方法
NULL
在SQL中表示
unknown
,与未知值进行任何比较的结果本身就是
unknown
。当您强制SQL在布尔表达式中使用
UNKNOWN
时,它将其视为false。这意味着
ID=NULL
将始终为false,因此
ID=NULL
顺便说一句,在a.ID为NULL的查询中,
将放弃所有行。
内部联接将只返回联接字段中没有空值的值
NULL=NULL
也是false,这意味着a.id=b.id
上的
内部联接表b将永远不会返回NULLIDs@PanagiotisKanavos
NULL=NULL
不是
FALSE
,但本质上你是对的。查询保证返回一个空结果。我必须从表B中选择其他字段。但我的问题是,当我们使用a.id=B.id进行内部联接时,如果使用a.id为NULL,如何获取记录。它肯定不会返回任何记录,对吗。?