Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql - Menerapkan gabungan luar ke pernyataan kompleks

Saya hanya bisa memikirkan satu cara untuk mencapai ini. Dengan kombinasi GROUP_CONCAT dan SUBSTRING_INDEX pada kueri kerja Anda saat ini. Contoh kueri di bawah ini:

SELECT    person_id,
          SUBSTRING_INDEX(GROUP_CONCAT(a.name ORDER BY a.score DESC),',',1) sname, 
          SUBSTRING_INDEX(GROUP_CONCAT(a.score ORDER BY a.score DESC),',',1) max_score FROM 
(SELECT   people.person_id,
          names.name,
          CASE 
          WHEN people.person_default_name_id=names.name_id AND language_scripts.script_id = '1' THEN 3
          WHEN names.language_id = '1' THEN 2
          WHEN language_scripts.script_id = '1' THEN 1
          ELSE 0
          END AS score
FROM      `people` 
LEFT JOIN `names` ON names.person_id=people.person_id
LEFT JOIN `languages` ON names.language_id = languages.language_id
LEFT JOIN `language_scripts` ON languages.language_id = language_scripts.language_id) a 
GROUP BY person_id;

Saya juga menguji kueri di biola http://sqlfiddle.com/#!9 /54ce8/33

Sedikit penjelasan:

  1. GROUP_CONCAT atas nama &skor dengan penambahan ORDER BY kondisi - perhatikan bahwa ORDER BY harus identik di kedua GROUP_CONCAT .
  2. SUBSTRING_INDEX untuk mendapatkan nilai pertama yang dipisahkan dengan koma (,) di bidang.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan mysql dalam tabel html dengan Node.js

  2. SQL pilih hanya baris dengan nilai maksimal pada kolom

  3. MySQL - Jika Dimulai Dengan Angka Atau Karakter Khusus

  4. Bagaimana cara menghubungkan NetBeans ke database MySQL?

  5. Permintaan MySQL untuk menghitung nilai bukan nol dalam satu baris