Common MySQL development skills

Copyright: LeifChen original, please indicate the source, thank you ~ https://blog.csdn.net/leifchen90/article/details/86718320

Common MySQL development skills

Finishing popular MySQL development skills.

Modified from value-added

ALTER TABLE [NAME] AUTO_INCREMENT = 100;

Regular capital letters query

SELECT * FROM [TABLE] WHERE BINARY [FIELD] REGEXP '[A-Z]'

Rows and columns

1. Line transfer column

Test Data
Table Name: student_score
student_score

SQL statements

SELECT
	name,
	SUM( CASE course WHEN 'Chinese' THEN score END ) AS 'Chinese',
	SUM( CASE course WHEN 'English' THEN score END ) AS 'English',
	SUM( CASE course WHEN 'Math' THEN score END ) AS 'Math' 
FROM
	student_score
GROUP BY
	name;

Conversion results
result

2. Column switch

Test Data
Table Name: permisson
permission
table: sequence
sequence

SQL statements

SELECT
	user,
	REPLACE (
		SUBSTRING(
			SUBSTRING_INDEX( auth, ',', a.id ),
			CHAR_LENGTH( SUBSTRING_INDEX( auth, ',', a.id - 1 ) ) + 1 
		),
		',',
		'' 
	) AS auth 
FROM
	`sequence` a
	CROSS JOIN (
	SELECT
		user,
		CONCAT( auth, ',' ) AS auth,
		LENGTH( auth ) - LENGTH( REPLACE ( auth, ',', '' ) ) + 1 size 
	FROM
	`permission` 
	) b ON a.id <= b.size;

Conversion results
result

Delete duplicate data

Test Data
Table: user
Test Data

SQL statements
use GROUP BYandHAVING

SELECT
	name,
	COUNT(*) AS '重复次数' 
FROM
	`user` 
GROUP BY
name 
HAVING
	COUNT(*) > 1;

result

Remove duplicate data, retaining the largest ID

DELETE a 
FROM
	`user` a
	JOIN (
	SELECT
		name,
		COUNT(*),
		MAX(id) AS id 
	FROM
	`user` 
	GROUP BY
	name 
	HAVING
		COUNT(*) > 1 
	) b ON a.name = b.name 
WHERE
	a.id < b.id

Test Results
result

Guess you like

Origin blog.csdn.net/leifchen90/article/details/86718320