Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
793 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...