我试着想一个SQL查询得到的结果由来自多个记录多列,该表是一样的:名单列
key_1 key_2
--------------------
1 2
1 3
1 4
5 6
两个key_1和key_2是另一个表的主键。而结果,我想获得越来越每次都与键键“1”,这就是:
key
--------
1
2
3
4
我尝试以下查询:
SELECT key_1 as key FROM tbl_keys_link WHERE key_1 IN (1)
UNION
SELEVY key_2 as key FROM tbl_keys_link WHERE key_2 IN (1)
但我使用pgAdmin的的检查它'解释'函数,似乎这个查询的处理时间不是非常优化的。有没有其他方法来构建查询以获得更好的性能?谢谢!
我创建了索引对(key_1,key_2),但是当我尝试使用您建议的SQL时,它指出这是关于使用对p的错误(错误消息:“对”是一个索引。)并且我不确定的一件事是,根据WHERE子句中的条件,在外部执行SELECT时,exists子句应该至少包含1条记录,但在引用上表时,值“1”发生在列key_1中,所以我认为这个查询会返回一个空的结果? – alanlo
@alanlo。 。 。 '对'只是我用于表格的名字。你说得对。两个条款之间的关系应该是逻辑的而不是'和'。 –