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
1.0k views
in Technique[技术] by (71.8m points)

sql - mysql select to return blanks for all but first row of repeating column

Is it possible to create a mysql select (directly or using a stored procedure) that will return blanks for repeating columns. For example, a select that would normally return these 7 records with 2 columns:

Bob   123
Bob   557
Bob   888
Joe   887
Joe   223
Tom   899
Tom   999

I would prefer to see this directly from the sql select:

Bob   123
      557
      888
Joe   887
      223
Tom   899
      999

I realize I can just post process the records in my program, but I'd like to replace the duplicates with blanks within the sql call.

See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

Following should work but it doesn't return the results in the order you've used in your example.

SELECT  IF(n.ID = nm.ID, n.Name, NULL)
        , n.ID
FROM    Names n
        INNER JOIN (
          SELECT  Name
                  , ID = MIN(ID)
          FROM    Names        
          GROUP BY
                  Name
        ) nm ON nm.Name = n.Name
ORDER BY
        n.Name
        , n.ID

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

...