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

NHÓM THEO thứ tự

Vì vậy, từ các nhận xét và việc bổ sung SqlFiddle, có vẻ như bạn muốn tạo một số hàng được phân vùng với mức độ ưu tiên trên US cho mỗi nền tảng và sau đó chọn bản ghi đầu tiên. Một cách để thực hiện Số hàng được phân vùng trong mysql là sử dụng các biến ở đây là một ví dụ:

SELECT
  territory_id
  ,platform_type_id
  ,store_url
FROM
( SELECT
    *
    ,@PlatFormRowNum:= IF(@prevplatform = platform_type_id, @PlatFormRowNum + 1, 1) as PlatformRowNum
    ,@prevplatform:= platform_type_id
  FROM
    main_itemmaster m
    CROSS JOIN (SELECT @prevplatform:='',@PlatFormRowNum=0) var
  ORDER BY
    platform_type_id
    ,CASE WHEN territory_id = 'US' THEN 0 ELSE 1 END
    ,territory_id
) t
WHERE
  t.PlatformRowNum = 1
ORDER BY
  t.platform_type_id

SQL Fiddle: http://sqlfiddle.com/#!9/81c3b6/12

Về cơ bản, điều này phân vùng số hàng theo nền tảng, đặt hàng Hoa Kỳ trước bất kỳ lãnh thổ nào khác và sau đó chọn nền tảng đặt trước hàng đầu tiên. Một câu hỏi / mẹo là làm cách nào để bạn chọn trả lại khi Hoa Kỳ không có sẵn cho nền tảng chỉ đơn giản là thứ tự bảng chữ cái tăng dần của lãnh thổ_id?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao GRANT USAGE được tạo vào lần đầu tiên tôi cấp đặc quyền cho người dùng?

  2. Truyền giá trị từ danh sách thả xuống hoặc trường văn bản trong Wordpress sang truy vấn MySQL trong functions.php

  3. Sự cố truy vấn MySQL FULLTEXT

  4. Chuyển đổi Google map v2 in sang google map v3

  5. Lỗi di chuyển keyring của máy chủ mysql 8.0 khi đăng nhập