Question: 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.

Answer: 
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

```
For MySQL (I guess it should be similar for other DBs), to avoid repeating a column value on every row, you can make good use of variables. No subqueries necessary: light and quick. 

```
//Init a variable
SET @previous:="";

//Remember previous row value
SELECT IF(Name=@previous, "", @previous:=Name) AS GroupedName, Value
FROM tableName ORDER BY 1;

```