【发布时间】:2025-12-14 23:20:12
【问题描述】:
我需要在一个垂直表中展平 2 行(然后连接到第三个表)我通常通过为我需要的每个字段制作一个派生表来做到这一点。只有两个字段,我认为这并没有那么不合理。
但我知道我想要返回到派生表中的行是与我的第三个表连接的子集。 所以我试图找出最好的派生表,以便查询最有效地运行。
我认为派生表的 where 子句越严格,派生表越小,得到的响应就越好。
我真正想要的是将派生表的 where 子句与与第三个表的连接相关联,但是您不能在 sql 中这样做,这太糟糕了。不过我不是sql高手,可能有一些我不知道的技巧。
另一种选择是制作没有 where 子句的派生表,它最终会加入整个表两次(每个字段一次),当我对它们进行联接时,联接会过滤所有内容出去。
所以我真正要问的是,我想创建一个派生表的最佳方法是什么,我非常清楚我想要什么行,但 sql 不会让我得到它们。
一个例子:
table1
------
id tag value
-- ----- -----
1 first john
1 last smith
2 first sally
2 last smithers
table2
------
id occupation
-- ----------
1 carpenter
2 homemaker
select table2.occupation, firsttable.first, lasttable.last from
table2, (select value as first from table1 where tag = 'first') firsttable,
(select value as last from table1 where tag = 'last') lasttable
where table2.id = firsttable.id and table2.id = lasttable.id
我要做的是创建 firsttable where 子句 where tag='first' and id = table2.id
【问题讨论】:
-
你能提供一些可以提供良好视觉效果的示例表和结果吗?
标签: sql sybase derived-table