我有一个看起来像这样的SQL查询
Select a.*
From table1 a
where a.ColumnName in
(Select MAX(b.ColumnName)
from table2 b
where b.ColumnName2 in
(
Select MAX(c.columnName)
from table3 c
Group by c.ColumnName2
)
Group by b.ColumnName2
)
我试图在连接语句中写这个。我是积极的内在联接是我需要获得正确的信息。如果有人可以将其翻译为加入声明,我会非常高兴。
谢谢。
编辑1: 我尝试了一个菜鸟的典型加入声明。
Select a.*
from table1 a
inner join table2 b
on a.columnname = (Select max(b.columnName) from table2)
inner join table3 c
on b.columnName = (select max(c.columnName) from table3)
显然,这不起作用,因为当我得到800时,我得到100,000以上的结果。我尝试使用table2和table3的别名INSIDE subselect语句并使用THAT别名选择列名:
Select max(bPart.columnName from table2 bPart)
Select max(cPart.columnName from table3 cPart)
结果仍然相同。
答案 0 :(得分:1)
... PERHAPS
虽然我不确定为什么需要加入。性能明智存在可能是最快的,因为你没有从表2或3返回值,看起来这似乎是最好的方法。
SELECT a.*
FROM table1 a
INNER JOIN (SELECT MAX(ColumnName) MColumnName, columnname2
FROM table2
GROUP BY columnName2) B
ON A.columnName = B.mColumnName
INNER JOIN (SELECT MAX(columnName) mColumnName
FROM table3
GROUP BY ColumnName2) C
ON B.columname2 = C.MColumnName