我有两个表,Table1和Table2。
基于Table1上一列中的值,我可以内部联接Table2中一定数量的列吗
表1:
id | col_number |
1 | 2
2 | 3
表2:
id | col1 | col2 | col3
1 | BRK | GOOG | APPL
2 |AMZN | INTC | TSLA
预期结果,如果为ID1:运行查询
id | col_number | col1 | col2
1 | 2 | BRK | GOOG
我还没有找到很多条件内部联接的例子,这些例子对我来说足够简单,我无法尝试理解它们。我找到的是以不同的表为条件的,而不是以列为条件的。
Fiddle:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=4efaf735c1f28fa8a9e55d77ca30fa71
在解析和准备查询之前,必须修复SQL查询的选择列表,而这发生在查询开始读取任何数据行之前。这意味着您不能根据所读取的某些行中的数据值来生成返回不同列数的查询。
此外,任何查询结果在每行中都必须具有相同的列数,而不是动态列数。
但是,您可以根据数据值使某些表达式在某些列中返回NULL。
SELECT table1.id, table1.col_number,
CASE WHEN table1.col_number >= 1 THEN table2.col1 ELSE NULL END AS col1,
CASE WHEN table1.col_number >= 2 THEN table2.col2 ELSE NULL END AS col2,
CASE WHEN table1.col_number >= 3 THEN table2.col3 ELSE NULL END AS col3
FROM table1 JOIN table2 USING (id);