再举个简单例子,有数据的
时间: 2024-02-22 10:00:40 浏览: 103
好的,再举一个简单的例子。假设有两个表:一个是Order表,包含订单的编号、日期和客户ID,另一个是Customer表,包含客户ID和客户姓名。这两个表之间存在一对多的关联关系,一个客户可以下多个订单。下面是两个表的数据示例:
Order表:
| OrderID | OrderDate | CustomerID |
| ------- | ----------| ---------- |
| 1 | 2021-01-01| 1001 |
| 2 | 2021-01-02| 1002 |
| 3 | 2021-01-03| 1001 |
| 4 | 2021-01-04| 1003 |
Customer表:
| CustomerID | CustomerName |
| ---------- | ------------ |
| 1001 | Alice |
| 1002 | Bob |
| 1003 | Charlie |
现在,如果要查询所有订单及其对应的客户姓名,可以使用以下SQL语句:
```
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Order o
JOIN Customer c ON o.CustomerID = c.CustomerID;
```
这条SQL语句将Order表和Customer表关联起来,查询出了所有订单及其对应的客户姓名。但是,由于一个客户可能下多个订单,因此查询结果中会出现多条相同的客户记录,这就是数据发散的表现。例如,Alice下了两个订单,因此查询结果中会出现两条Alice的记录。为了避免数据发散,可以使用DISTINCT关键字去重:
```
SELECT DISTINCT o.OrderID, o.OrderDate, c.CustomerName
FROM Order o
JOIN Customer c ON o.CustomerID = c.CustomerID;
```
这条SQL语句将查询结果去重,确保每个客户只出现一次。
阅读全文