【问题标题】:SQL return inner join in a single rowSQL 在单行中返回内部联接
【发布时间】:2015-03-24 11:19:45
【问题描述】:

我有两张桌子:

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

这可能吗?

【问题讨论】:

    标签: mysql sql select join


    【解决方案1】:

    评论太长了。

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

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

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

    【讨论】:

    • 所以基本上我应该返回所有行,然后在我的应用程序中组织值?
    • @Vilius 。 . .两种方法似乎具有相同的行数。应用程序只是在重复时从前几列中删除值进行格式化。
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多