Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?

王林
Lepaskan: 2023-05-27 21:23:06
ke hadapan
12685 orang telah melayarinya

1. Masukkan data ujian

Dalam data ujian dalam rajah di bawah, pengguna yang nama_penggunanya ialah lilei dan zhaofeng ialah data pendua.

Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?

2 Kaedah menghapuskan data pendua

1 Kaedah 1: Gunakan

Kodnya adalah seperti berikut ( contoh):

select distinct user_name,email,address from t_user;
Salin selepas log masuk

Seperti yang ditunjukkan dalam gambar di bawah, data telah dinyahduplikasi dan hanya 1 data pendua dikekalkan.

Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?

2 Kaedah 2: Gunakan kumpulan mengikut

SELECT user_name,email,address 
	FROM t_user 
	GROUP BY user_name, email, address;
Salin selepas log masuk

seperti yang ditunjukkan di bawah dan hanya 1 data pendua dikekalkan.

Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?

3 Kaedah 3: Gunakan fungsi windowing

(1) Jika pangkalan data anda ialah MySQL8 atau ke atas, anda boleh terus menggunakan fungsi windowing row_number(. )

SELECT *
FROM(
    SELECT t.*, 
           ROW_NUMBER() OVER(PARTITION BY user_name
           ORDER BY last_login DESC) rn
    FROM table AS t
	) AS t_user
WHERE rn = 1;
Salin selepas log masuk

(2) Jika versi pangkalan data anda lebih rendah daripada MySQL8, gunakan kaedah kelas row_number()

select user_name, email, address 
from (
	select 
		b.*,
		@rownum := @rownum+1 ,-- 定义用户变量@rownum来记录数据的行号
		if(@pdept=b.user_name,@rank:=@rank+1,@rank:=1) as rank,-- 如果当前分组user_name和上一次分组user_name相同,则@rank(对每一组的数据进行编号)值加1,否则表示为新的分组,从1开始
		@pdept:=b.user_name -- 定义变量@pdept用来保存上一次的分组id
	from (select * from t_user) b ,
		(select @rownum :=0 , @pdept := null ,@rank:=0) c  -- 初始化自定义变量值
	order by b.user_name,b.last_login desc -- 该排序必须,否则结果会不对
) result
where rank = 1;
Salin selepas log masuk

seperti yang ditunjukkan di bawah Data telah dinyahduplikasi dan hanya 1 data pendua dikekalkan .

Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?

Atas ialah kandungan terperinci Apakah kaedah untuk mengalih keluar pertanyaan pendua dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan