1

我正在尝试加入两个表,但我无法加入其中field1一个指令的结果。table1field2table2DISTINCT

例如

Select f1
From   table1 
join (Select distinct(f2) as "secondField"
      From table2
     ) b on f1 = *X*

我可以设置X什么?也许b.f2b.secondField

如果X是特定字段,我没有问题,如果它是由 DISTINCT、SUM 或类似函数给出的,我将无法管理它。

有人可以给我小费吗?

4

3 回答 3

0
SELECT f1 
FROM table1 a
JOIN (SELECT DISTINCT(f2) as "secondField" FROM table2) b
  ON a.f1 = b.secondField

会得到你正在寻找的东西。由于您在子查询中给出了特定名称,这就是您要使用的名称(以及您必须使用的名称,因为您使用的是DISTINCT)。

于 2013-04-26T20:40:10.717 回答
0

你试过加入secondfield吗?请参阅以下内容:

Select f1
From   table1 
join (Select distinct(f2) as "secondField"
      From table2
    ) b on b.secondField = table1.f1

简单地说,如果您在子查询中使用诸如 Distinct、Count、Max 等聚合函数,请给聚合一个别名并在连接语句中使用此别名。

于 2013-04-26T20:40:20.077 回答
0

看起来您尝试做的事情可能会更简单地写成:

SELECT f1 
FROM table1 a
WHERE  f1 IN (SELECT f2 as "secondField" FROM table2)

或者

SELECT f1 
FROM table1 a
WHERE  f1 IN (SELECT DISTINCT(f2) as "secondField" FROM table2)

其中之一可能比您的 JOIN 更快

于 2013-04-26T22:30:47.550 回答