SQL在单行中返回内部联接

时间:2015-03-24 11:19:45

标签: mysql sql select join

我有两张桌子:

Table1:

ID | Column 1 | Column 2
1  | Value 1  | Value 2

Table 2:
ID | Column 3 | Column 4
1  | Value 4  | Value 5
1  | Value 6  | Value 7

目前我的查询是:

SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id ;

返回:

id |    Column 1 |  Column 2 |  id  |   Column 3 |  Column 4
1  |    Row 1    |    Row 1  |   1  |   Row 1    |    Row 1
1  |    Row 1    |    Row 1  |   1  |   Row 2    |    Row 2
1  |    Row 1    |    Row 1  |   1  |   Row 3    |    Row 3

我想使用SQL内连接或任何其他连接来返回Table1中的单行,以及来自Table2的所有其他相关行

  id |  Column 1 |  Column 2 |  id  |   Column 3 |  Column 4
  1  |  Row 1    |    Row 1  |   1  |   Row 1    |    Row 1
                                 1  |   Row 2    |    Row 2
                                 1  |   Row 3    |    Row 3

这可能吗?

1 个答案:

答案 0 :(得分:1)

评论太长了。

可以在SQL中执行您想要的操作,但我不鼓励您尝试它。首先,它在MySQL中比在其他方言中更麻烦(因为缺少窗口函数)。

更重要的是,它违反了关系数据库中的一个关键思想:表和结果集代表无序集。行的顺序无关紧要。在结果集中,第一行和其余行之间存在很大差异。许多行的含义取决于它之前的内容。并且,在无序集合中没有“之前”。

虽然在SQL中获得这些结果是一个很好的挑战,但最好在应用程序层中进行这种类型的格式化。应用程序编程环境更适合调整演示结果。