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