【发布时间】:2012-07-16 04:58:33
【问题描述】:
为简化起见,有两个表格“交易”和“汇率”。
trades.userid和rates.fee通过trades.rateid连接起来=rates.rateid
问题是 SELECT 不会返回唯一值,而是所有可能的值。
SELECT r.fee
FROM rates AS r
LEFT JOIN trades AS t
ON r.rateid = t.rateid
WHERE t.userid=(somevalue)
DISTINCT 或 TOP 1 由于排序混乱,这里不能选择。此处无需订购。
如何选择正确且唯一?
我只想通过给定的trades.rateid 或一些trades.userid 选择适当的rates.fee
trades
------
userid rateid total
101 1
101 1
101 2
101 1
rates
-----
rateid fee
1 0.90
2 0.80
3 0.70
UPDATE trades
SET total = (someformula) * (above SELECT query goes here)
WHERE userid = (somevalue)
谢谢。
【问题讨论】:
-
您是要查找每位用户的费用总和,还是仅查找每位用户的唯一费用?尝试添加
GROUP BY t.userid, r.fee以获得每位用户的唯一费用,或将其更改为SELECT SUM(r.fee) ... GROUP BY t.userid以汇总用户的费用。也许您可以在两个表格中添加一些示例内容,以及您期望的结果? -
@ViswanathanIyer:OP 说
TOP 1不是一个选项。 -
如果有一个 given
trades.rateid那么你的WHERE子句不应该包含类似…AND t.rateid = (somevalue)的东西吗? -
也许你可以添加一个“鉴于这些记录......我期待这些结果......”部分,因为很难理解你想要什么。
-
更新了我的问题。很抱歉给您带来不便。