sql - 使用 Postgres : Create a Column of Binary Data Conditional on Data in Another Table

标签 sql postgresql conditional-statements alter

我有一个表,其中包含唯一 ID 和描述这些 ID 特征的数据列的列表。它采用以下形式:

ID  Tall  Funny  Weight
1   1      0     200
2   0      0     180
3   1      1     250

等等。我有另一个表,它只是一个具有特征的人的 ID 列表,例如收入超过 10 万。

Rich
1 
3 

我想做的是在第一个表中创建一个列,如果它们在第二个表中则为 1,否则为 0。我可以在 R 中这样做:

TableA$Rich <- TableA$ID %in% TableB

但它非常慢,如果没有其他原因,因为我的 postgres (ParAccel/PaDB) 集群拥有的资源比我可以运行 R 的资源多。你能帮我完成这个吗?

我试着做一个左外连接,比如...

create table c as(select a.id, tall, funny, weight,b.id as rich
from tablea a
left outer join tableb b 
on a.id = b.id);

却产生了意想不到的结果。它给了我

ID  Tall  Funny  Weight  Rich
1   1      0     200     1
2   0      0     180     2
3   1      1     250     3

即使它应该是“1,NULL,3”,我也更喜欢 1 和 0。我担心这可能是数据错误,但数据看起来是正确的。我用 case when 语句尝试了同样的事情,得到了相同的结果,但 Rich 的所有值都为“TRUE”。

最佳答案

case 语句可以解决您的问题:

create table c as
    select a.id, tall, funny, weight,
           (case when b.id is null then 0 else 1 end) as rich
    from tablea a left outer join
         tableb b
         on a.id = b.id;

关于sql - 使用 Postgres : Create a Column of Binary Data Conditional on Data in Another Table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283438/

相关文章:

sql - 是否可以有动态 COUNT (CASE WHEN) 语句?

PHP OCI8 为 'IN' 语句绑定(bind)(未知数量)参数

xml - 是 XPath sum 还是 fn :sum function implemented in PostgreSQL XPath?

ruby-on-rails - 在 Mac 上安装 do_postgres

java - 为什么我必须使用相同的对象来同步和调用等待/通知,但使用类 Condition 我可以使用不同的对象?

sql - 从Sql Server删除所有 View

sql - 左加入 SQL Server 根据排名返回结果

ruby-on-rails - gitlab 迁移数据库但 db/schema.rb 没有改变

javascript - 将字符串格式的条件语句转换为实际逻辑

c# - 检查字符串是否不为空且不为空时,顺序重要吗?