postgrePostgres SQL - IN(.)如..在“选择”中



有人可以帮我了解IN(...如。。。在选择中。这是我第一次看到这样的事情。此外,数据库如何确定行值或新 ID?这是在Postgres datababse上。

SELECT  tbl_a.*, (
        tbl_z.z_id IN (
            SELECT x_id
            FROM table_x 
            WHERE name = '...'
            )
        ) AS newID
FROM (...)

newId 将是布尔类型。是的,如果

tbl_z.z_id IN (
            SELECT x_id
            FROM table_x 
            WHERE name = '...'
            )

如果不是,则为假。

AS column_name 是别名。

更新回答您的评论。

https://www.postgresql.org/docs/current/static/sql-select.html#SQL-WHERE

其中条件是计算结果的任何表达式类型。 布尔。

因此,如果您在WHERE中有IN (...),它将返回与列列表中相同的布尔值。对或错。无区别 - where 或作为列,返回 true 或 false

第二列是问题的答案:"tbl_z.z_id 是否在 name = '...'table_x的x_id列表中?

由于这是一个是/否问题("IN"总是意味着(,它是一个布尔值(真或假(。

"AS"子句告诉它如何命名该列(它不是直接来自表,所以它不知道该怎么称呼它(。这不是严格要求的,但它使在输出中对该列的寻址变得更加容易,如果您希望列名与您来自的表中的名称不同,您也可以使用它(如果您要连接两个表,并且它们碰巧每个表都有一个具有相同名称的列是这方面的用例(。

最新更新