我正在努力弄清楚如何将一个便利数据列添加到连接表以用于评估。 对不起,如果术语不正确,我有点像SQL新手。
对于此查询结构:
SELECT t1.id
FROM
table1 t1
INNER JOIN
table2 t2 ON t1.c2 = t2.c1
WHERE
t1.c5=5;
...我想在连接表中添加一个列,该列是使用一些t1
列的函数计算的。例如,名为sum
的变量中t1.x
,t1.y
,t1.z
的{{1}}可以在score
子句中引用。
背后的原因是它会被多次引用,并会降低冗长度并提高可读性。
我认为它看起来像:
WHERE
使用PostgreSQL 9.3
答案 0 :(得分:1)
一个好的选择是使用having子句。
Select t1.id, SUM(t1.x + t1.y + t1.z)
FROM table1 t1 inner join table2 t2 on t1.c2 = t2.c1
WHERE t1.c5 = 5
GROUP BY t1.id
Having SUM(t1.x + t1.y + t1.z) = ...
或者,您可以在from子句中执行子查询。下面的代码对结构做了一些假设。
SELECT t1.id
FROM
(Select SUM(t1.x + t1.y + t1.z) as score, t1.c5, t1.c2, t1.id
FROM table1 t1
GROUP BY t1.id
) t1
INNER JOIN table2 t2 on t1.c2 = t2.c1
WHERE
t1.c5=5
And t1.score = ...
答案 1 :(得分:1)
如果从score
列计算t1
,则在t1
上使用子查询:
SELECT t1.id
FROM (select t1.*, function(t1.x, t1.y, t1.z) as score
from table1 t1
) t1 INNER JOIN
table2 t2
ON t1.c2 = t2.c1
WHERE t1.c5 = 5 AND
t1.score . . .