SQL - 根据另一个表中的信息在表中搜索并返回多个结果

时间:2014-08-27 09:25:50

标签: sql

我有一张桌子' trace'其中包含以下信息:

|  galaxyId  |  lastProgenitorId  |
-----------------------------------
|  0         |  27                |
|  2890      |  3001              |
|  ...       |  ...               |
|  189279    |  190056            |
-----------------------------------

我有另一张桌子' main'其中包括以下内容:

|  galaxyId  |  stellarMass  |  umag  |  imag  |
------------------------------------------------
|  25        |  10.5         |  -21   |  -22   |
|  2901      |  10.8         |  -23   |  -21   |
|  3000      |  10.0         |  -22   |  -21   |
|  ...       |  ...          |  ...   |  ...   |
|  200000    |  10.1         |  -22   |  -22   |
------------------------------------------------

我希望做的是,对于每个trace.galaxyId,检索以下条件满足的维护中的所有相应行:

main.galaxyId BETWEEN trace.galaxyId AND trace.lastProgenitorId

这可能会返回多个结果,结果将是(来自上面的示例):

|  trace.galaxyId  |  main.galaxyId  |  main.umag  |  main.imag  |
------------------------------------------------------------------
|  0               |  25             |  -21        |  -22        |
|  2890            |  2901           |  -23        |  -21        |
|  2890            |  3000           |  -22        |  -21        |
------------------------------------------------------------------ 

我觉得这很容易,但我的大脑却看不出怎么做!我觉得需要PARTITION BY吗?任何帮助非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用联接:

SELECT 
    t.GalaxyId As TraceGalaxyId,
    m.GalaxyId as MainGalaxyId,
    m.umag,
    m.imag 
FROM trace
JOIN main m 
ON m.galaxyId BETWEEN t.GalaxyId AND t.lastProgenitorId AND m.snap = 'Specific Value'