Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL JOIN - Trả về NULL cho các kết quả trùng lặp trong bảng bên trái

Bạn có thể thay thế các giá trị bằng một cái gì đó như sau:

select 
  case when rownum = 1 then title else null end title,
  name,
  category_id
from
(
  SELECT c.title, 
    i.name, 
    i.category_id,
    @row:=(case when @prev=title and @precat=category_id 
           then @row else 0 end) + 1 as rownum,
    @prev:=title ptitle,
    @precat:=category_id pcat
  FROM items AS i
  INNER JOIN categories AS c 
    ON c.id = i.category_id
   order by i.category_id, c.title
) src
order by category_id, rownum

Xem SQL Fiddle with Demo

Kết quả là:

|  TITLE |   NAME | CATEGORY_ID |
---------------------------------
|    red |  apple |           1 |
| (null) |    car |           1 |
| (null) |  paper |           1 |
| yellow |   lego |           2 |
| (null) | banana |           2 |
|   blue |    pen |           3 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tính tiền ký quỹ trong MySQL

  2. Thư viện PDO có nhanh hơn các Hàm MySQL gốc không?

  3. Làm cách nào để tạo một cột tăng tự động MySQL khác?

  4. Cách lấy kích thước của cột trong bảng mysql

  5. Làm thế nào để đồng bộ hóa hai bảng của các cơ sở dữ liệu MySQL khác nhau trên cùng một máy?