应该以什么顺序解释代码?

时间:2019-04-09 20:23:10

标签: mysql join

我正在尝试解释此SQL代码,但是无论我尝试多少,都无法获得正确的输出。表格是:

  T1     T2
C1 C2   C1 C2
A  1    A  4
A  2    A  2
B  2    B  2
C  1    D  5

我是从错误的方式(向上->向下)阅读代码吗? SELECT DISTINCT,这是否意味着我应该省略每个表中重复的行之一?

我应该从条件T1.C1 = T2.C1联接表开始吗?

我自己的输出是:

A 1 A 4
A 2 A 2
B 2 B 2

正确的输出是:

A 2 A 2
A 2 A 4
B 2 B 2

相关代码:

SELECT DISTINCT T1.C1, T1.C2, T2.C1, T2.C2
FROM T1
JOIN T2 ON T1.C1 = T2.C1
WHERE T1.C2 IN (2, 4)

1 个答案:

答案 0 :(得分:3)

在不习惯之前,SQL语句流有点奇怪。

首先,您要命名数据源,在这种情况下,您将以此命名虚拟表。

FROM T1
JOIN T2 ON T1.C1 = T2.C1

接下来,您将过滤数据源。

WHERE T1.C2 IN (2, 4)

接下来,您选择输出结果集中所需的列:

SELECT T1.C1, T1.C2, T2.C1, T2.C2 

接下来,您可以通过插入DISTINCT子句或使用GROUP BY子句来汇总数据。

接下来,您使用ORDER BY子句对其进行排序。你没有一个。没关系。

这就是像您一样的SQL查询的逻辑结构。但是请记住,MySQL和其他SQL表服务器已经有数千名程序员致力于优化这些内容。