2017-08-16 37 views
0

我试图做一些靠不住的,但我想不出任何其他方式做到这一点:如何使用字段名作为参数嵌套的select语句

SELECT 
    my_table.field1 as field1, 
    (EXISTS (SELECT 1 FROM another_table WHERE id = field1)) as does_exist 
FROM my_table 

这显然失败了,因为field1在结果集创建时不存在。有谁知道如何做到这一点?

+0

假设'mytable.field1'实际上不具有相同的名称为'field1','ID = mytable的。 field1'? – Ryan

+0

哇,这工作。 – dopatraman

+0

完成什么?你所展示的所有代码都不能以你无法预料的方式工作,而这种方式应该不是它本应该工作的方式。 “失败”是什么意思?不要过分依赖你的猜测,因为“因为”。 – philipxy

回答

2

您可以使用左侧加入:

select distinct on (t1.field1) t1.field1, t2.id is not null as does_exist 
from my_table t1 
left join another_table t2 on t2.id = t1.field1 

但是您的查询应该工作以及:

SELECT 
    my_table.field1 as field1, 
    (EXISTS (SELECT 1 FROM another_table WHERE id = my_table.field1)) as does_exist 
FROM my_table 
0

选择 my_table.field1为FIELD1, 情况another_table.ID 当空,则0
else 1 end do_exist FROM my_table left outer j OIN another_table上another_table.ID = my_table.field1

这里1存在,且0不存在