具有重复值的SQL连接

具有重复值的SQL连接,sql,sql-server,Sql,Sql Server,我意识到我在上一篇文章中犯了一个错误,这应该更清楚 假设我有一个带有ID和当前ID的表: tbl_id id cur_id value aa zz 5 zz zz 10 bb yy 2 yy yy 11 假设我有另一张价格表: tbl_price id price aa 200 bb 100 我需要返回与tbl\u price中的每个id关联的cur\u id的价格和值: cur

我意识到我在上一篇文章中犯了一个错误,这应该更清楚

假设我有一个带有ID和当前ID的表:

tbl_id
id   cur_id   value
aa    zz        5
zz    zz        10
bb    yy        2
yy    yy        11
假设我有另一张价格表:

tbl_price
id    price
aa      200
bb      100
我需要返回与
tbl\u price
中的每个
id
关联的
cur\u id
的价格和值:

cur_id   value   price
zz        10       200
yy        11       100
我遇到的问题是返回正确的
值。当我进行内部联接时:

SELECT
  tbl_id.cur_id,
  tbl_id.value,
  tbl_price.price
FROM
  tbl_price
INNER JOIN tbl_id
  ON tbl_id.id = tbl_price.id
这给了我这些结果:

cur_id   value   price
zz        5       200
yy        2       100

我明白为什么会发生这种情况是因为连接的工作方式。但是,我不知道如何再次重新加入表以获得适当的
where
tbl\u id.id=tbl\u id.cur\u id
。我是否需要以某种方式重新加入表?

尝试添加where语句:

INNER JOIN tbl_id
  ON tbl_id.id = tbl_price.id 
  WHERE tbl_id.id = tbl_id.cur_id

您需要再进行一次自联接才能获得所需的结果:

SELECT
  i1.cur_id,
  i2.value,
  p.price
FROM
  tbl_price p
INNER JOIN tbl_id i1 ON i1.id = p.id
INNER JOIN tbl_id i2 ON i1.cur_id = i2.id
其思想是再次加入ID表,并从第二次加入中获取一个远离ID的ID


不是,我需要它返回id=cur\u id的值,而不是id cur\u id所在行上的值。例如,id=aa的值为5。然而,它的cur_id是zz,它的值为10。我需要把那十个还给你。我终于明白你的意思了——我被原来帖子上的打字错误吓坏了。现在我明白你想做什么了。很抱歉,谢谢你的帮助。谢谢,我刚刚在SQLFiddle上做了同样的事情,这证实了我的想法。现在,正如你所展示的那样,我刚刚重新加入这个团队,它工作得很好!谢谢