SQL-基于另一个表中的信息在表中搜索并返回多个结果
我有一个表“trace”,其中包含以下信息:SQL-基于另一个表中的信息在表中搜索并返回多个结果,sql,Sql,我有一个表“trace”,其中包含以下信息: | galaxyId | lastProgenitorId | ----------------------------------- | 0 | 27 | | 2890 | 3001 | | ... | ... | | 189279 | 190056 | -----------
| 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,检索maintable中满足以下条件的所有对应行:
main.galaxyId BETWEEN trace.galaxyId AND trace.lastProgenitorId
这可能会返回多个结果,结果如下(来自上面的示例):
我觉得这很简单,但我的大脑就是不知道怎么做!我觉得需要分区吗?非常感谢您的帮助。提前感谢。使用连接:
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'
您使用的是哪种数据库管理系统?博士后?Oracle?我正在使用一个外部服务,它的文档相当缺乏。所以答案是我不知道。如果main有另一个列m.snap,我只想搜索具有此特定值的对象作为附加条件,那么此查询将如何更改?@CarlM just add和m.snap=specific valueAdded作为@SEBBINFIELD suggested谢谢。作为进一步的练习,是否有方法将每个t.galaxyId返回的行数限制为3,例如?更复杂。查看ROW_NUMBER()子句和子查询。首先尝试一下,如果你被卡住了,建议你问一个新问题
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'