Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
771 views
in Technique[技术] by (71.8m points)

distinct - MySQL SELECT INCREMENT

Reading this post: MySQL SELECT increment counter I tried the solution by juergen d and was successful, except when I attempted to use DISTINCT on the selected column, it returns the primary key values for each row rather than an indexed value. The successful query:

SELECT city,
ROW_NUMBER() OVER() 
FROM addresses 
WHERE city IS NOT NULL AND city <> '' 
ORDER BY city;

City can be the same for multiple rows, so the desire is to return only distinct values with the ordered numerical column.

question from:https://stackoverflow.com/questions/66052471/mysql-select-increment

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Use a subquery to get the distinct values, then use ROW_NUMBER() in the main query.

SELECT city, ROW_NUMBER() OVER ()
FROM (
    SELECT DISTINCT city
    FROM addresses
    WHERE city IS NOT NULL AND city <> ''
) AS x
ORDER BY city

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...