У меня есть одна таблица "трассировка", которая содержит следующую информацию:
| 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
Это может вернуть несколько результатов, например (из приведенного выше примера):
| trace.galaxyId | main.galaxyId | main.umag | main.imag |
------------------------------------------------------------------
| 0 | 25 | -21 | -22 |
| 2890 | 2901 | -23 | -21 |
| 2890 | 3000 | -22 | -21 |
------------------------------------------------------------------
Я чувствую, что это легко, но мой мозг просто не может понять, как это сделать! Мне кажется, нужен PARTITION BY? Любая помощь очень ценится. Заранее спасибо.
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'
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.