Select 每个对应行的 MAX
Select MAX of each corresponding row
SQL 的新手,但我会尽量说清楚,
我有 3 个 table,它们有相应的键列。我需要 select 行设置列的最大值,对于它的每个对应列。
Table1
ID1 Value1
1 Marie
2 Max
3 John
Table2
ID2 Value2
1 First
2 Second
3 Third
Table3
ID1 ID2
1 1
1 2
2 1
2 2
2 3
3 1
到目前为止我有这样的东西;
SELECT T1.Value1, T2.Value2 FROM Table1 T1
INNER JOIN Table3 T3 ON T1.ID1 = T3.ID1
INNER JOIN Table2 T2 ON T3.ID2 = T2.ID1
WHERE (That's where I can't formulate correctly)
到目前为止,我的 table 已正确连接,但我只想输出 ID2 为相应 ID1 的最大值的行。
所以我们有
ID1 ID2
1 2
2 3
3 3
因此,从值的对应关系我们终于有了。
Value1 Value2
Marie Second
Max Third
John First
有什么帮助吗?另外,禁止分组。
您必须在 WHERE 条件中使用 MAX:
SELECT
T1.Value1,
T2.Value2
FROM
Table1 T1
INNER JOIN Table3 T3 ON T1.ID1 = T3.ID1
INNER JOIN Table2 T2 ON T3.ID2 = T2.ID1
WHERE
T3.ID2 = (
SELECT
MAX(T3_alias.ID2)
FROM
Table3 AS T3_alias
WHERE
T3_alias.ID1 = T1.ID1
)
SQL 的新手,但我会尽量说清楚,
我有 3 个 table,它们有相应的键列。我需要 select 行设置列的最大值,对于它的每个对应列。
Table1
ID1 Value1
1 Marie
2 Max
3 John
Table2
ID2 Value2
1 First
2 Second
3 Third
Table3
ID1 ID2
1 1
1 2
2 1
2 2
2 3
3 1
到目前为止我有这样的东西;
SELECT T1.Value1, T2.Value2 FROM Table1 T1
INNER JOIN Table3 T3 ON T1.ID1 = T3.ID1
INNER JOIN Table2 T2 ON T3.ID2 = T2.ID1
WHERE (That's where I can't formulate correctly)
到目前为止,我的 table 已正确连接,但我只想输出 ID2 为相应 ID1 的最大值的行。
所以我们有
ID1 ID2
1 2
2 3
3 3
因此,从值的对应关系我们终于有了。
Value1 Value2
Marie Second
Max Third
John First
有什么帮助吗?另外,禁止分组。
您必须在 WHERE 条件中使用 MAX:
SELECT
T1.Value1,
T2.Value2
FROM
Table1 T1
INNER JOIN Table3 T3 ON T1.ID1 = T3.ID1
INNER JOIN Table2 T2 ON T3.ID2 = T2.ID1
WHERE
T3.ID2 = (
SELECT
MAX(T3_alias.ID2)
FROM
Table3 AS T3_alias
WHERE
T3_alias.ID1 = T1.ID1
)