1

我有两张桌子:

**T1**
ID |Transaction| amount |
1  |trans1     | 97     |
1  |trans2     | 22     |
2  |trans7     | 98     |


**T2** 
ID |description|spec|
1  |Item 1     |text|
2  |Item 2     |zip |

注意:两个表中的 ID 列是相同的。但是,表 T1 中的 ID 不是唯一的。

我需要查询来从表中检索数据,但只有数量最多的行(表 T1)。示例结果:

ID|description|spec|transaction|amount|
1 |item1      |text| trans1    |  97  | 
2 |item2      |zip | trans7    |  98  | 

帮忙

谢谢你。

4

2 回答 2

1

您应该使用此查询为 T2 中的每个 ID 获取一行

SELECT ID, MAX(AMOUNT) AS AMT FROM T1 GROUP BY ID

然后将第一个表加入其中并选择您需要的所有内容。所以它看起来像这样:

SELECT T2.ID,
  description,
  spec,
  transaction ,
  AMT
FROM T2
JOIN
  (SELECT ID, MAX(AMOUNT) AS AMT FROM T1 GROUP BY ID
  ) T3
ON T3.ID=T2.ID;

注意:我使用了 Oracle,在您的数据库中,您可能需要修改查询以解决关键字冲突。

于 2013-09-12T02:38:22.523 回答
0

尝试以下查询:

SELECT ID, description, spec, `transaction` , amt
FROM T2
JOIN
  (SELECT ID, `transaction`, MAX(amount) AS amt FROM T1 GROUP BY ID) AS T3
ON T3.ID=T2.ID

注意,因为该词transaction可能是保留关键字。您总是可以用刻度线括起来(如上)

于 2013-09-12T02:11:17.243 回答