为简化起见,有两个表'交易'和'费率'。
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
无法成为此选项。这里不需要订购。
如何正确选择?
我只想按某些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)
谢谢。
答案 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
无法唯一标识某个费率,则应编辑该问题以澄清应选择的费率。