mysql多表联查结果根据指定字段去重
时间: 2023-10-09 07:14:23 浏览: 128
可以使用 SELECT DISTINCT 来去除重复的结果,结合多表联查的语法,可以写出如下的 SQL 语句:
```
SELECT DISTINCT t1.field1, t2.field2, t3.field3
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.table1_id
INNER JOIN table3 t3 ON t2.id = t3.table2_id;
```
其中,t1、t2、t3 分别为表 table1、table2、table3 的别名,field1、field2、field3 分别为需要查询的字段。使用 DISTINCT 可以去除所有字段的重复结果。需要注意的是,如果只需要根据某个指定字段去重,可以只在该字段上使用 DISTINCT。例如,如果只需要根据 t1.field1 去重,可以写成:
```
SELECT DISTINCT t1.field1, t2.field2, t3.field3
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.table1_id
INNER JOIN table3 t3 ON t2.id = t3.table2_id
GROUP BY t1.field1;
```
这样可以保留 t1.field1 不重复的结果,并且可以在 GROUP BY 子句中对其他字段进行聚合操作。
相关问题
mysql查多个字段怎么根据某个字段去重
根据引用中的信息,要更改MySQL的配置以解决"only_full_group_by"的问题,可以通过编辑MySQL的配置文件(mysql/my.ini)并删除"only_full_group_by"选项。具体步骤如下:
1. 找到my.ini文件
2. 找到部分并添加以下配置:sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
3. 重启MySQL服务:先使用命令行运行"mysqld --install",然后分别运行"net stop mysql"和"net start mysql"来停止和启动MySQL服务
根据引用中的信息,如果要根据某些字段的去重查询重复项(不包含原始项),可以使用以下SQL语句:
select * from tableA where c_id not in (select min(c_id) minid from tableA group by c_name,c_year,c_month)
根据引用中的信息,如果要针对单独一个字段去重查询,可以使用以下SQL语句:
SELECT `name`,`code` FROM sys_user GROUP BY `name`
综上所述,你可以按照上述方法来解决"only_full_group_by"问题,并使用相应的SQL语句根据字段去重查询重复项。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [MySQL针对单独一个字段去重的查询](https://blog.csdn.net/qq_45040905/article/details/126645388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* [Mysql去重查询(根据指定字段去重)](https://blog.csdn.net/wang1qqqq/article/details/115241993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
MySQL 多表联查去重
可以使用关键词 DISTINCT 和 INNER JOIN 实现多表联查去重。例如,假设有两个表 A 和 B,它们的结构如下:
```
表 A:
id | name
1 | Tom
2 | Jack
3 | Lucy
表 B:
id | name
1 | Tom
4 | Bob
5 | Alice
```
现在我们需要查询表 A 和表 B 中的所有 name 字段,并且去重。可以使用以下 SQL 语句:
```
SELECT DISTINCT A.name
FROM A
INNER JOIN B
ON A.name = B.name;
```
执行以上 SQL 语句后,将会得到以下结果:
```
name
Tom
```
这是因为在表 A 和表 B 中,只有 Tom 这个 name 出现在两个表中。如果表 A 和表 B 中都出现了同一个 name,则在结果集中只会出现一次。