TSQL通过选择适当的单值保持加入UPDATE

时间:2012-07-16 04:58:33

标签: sql tsql select left-join

为简化起见,有两个表'交易'和'费率'。

trades.useridrates.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)
由于订单混乱,

DISTINCTTOP 1无法成为此选项。这里不需要订购。

如何正确选择?

我只想按某些rates.fee

的给定trades.rateid选择适当的trades.userid
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)

谢谢。

1 个答案:

答案 0 :(得分:1)

如果特定交易只有一种利率,您可以使用update ... from T-SQL结构:

UPDATE  t
SET     total = (someformula) * r.fee
FROM    trades AS t
JOIN    rates AS r
ON      r.rateid = t.rateid
WHERE   t.userid = (somevalue)

如果rateid无法唯一标识某个费率,则应编辑该问题以澄清应选择的费率。