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

MySQL Butuh bantuan mendefinisikan SQL untuk menghapus baris yang tidak diinginkan

DISTINCT berfungsi pada semua kolom di SELECT, begitu juga Anda MEMILIH semuanya, itu akan mengembalikan setiap baris yang berbeda dan bukan hanya posting yang berbeda. Untuk menyiasatinya, Anda cukup PILIH data dari tabel posting dan kemudian BERBEDA, mis.

SELECT DISTINCT posts.*

Tetapi Anda juga mengatakan bahwa Anda akan menyukai pos dan info kucing juga jika memungkinkan. Salah satu cara untuk melakukan ini dan menyimpan satu baris per posting adalah dengan menggunakan GROUP_CONCAT jadi kueri Anda mungkin berakhir seperti ini.

SELECT 
   posts.*,
   GROUP_CONCAT(cats.id SEPARATOR ',') as catsList,
   GROUP_CONCAT(tags.id SEPARATOR ',') as tagsList
FROM posts
INNER JOIN termRelations ON ( posts.id = termRelations.postId )
LEFT JOIN cats ON ( termRelations.termId = cats.id AND termRelations.termTypeId = 1 AND cats.id =5 )
LEFT JOIN tags ON ( termRelations.termId = tags.id AND termRelations.termTypeId = 0 AND 
   (tags.id =2
   OR tags.id =1)
)
GROUP BY posts.id
LIMIT 0 , 30

Saya telah membuat beberapa perubahan lain pada kueri asli Anda seperti mengubah gabungan pertama menjadi INNER JOIN dan menambahkan filter cat/tags ke kondisi GABUNG untuk tabel yang relevan.

id ketika Anda mengatakan Anda memiliki tabel terpisah untuk kucing dan tag untuk mempercepat pembuatan daftar, Anda mungkin menemukan bahwa satu tabel yang diindeks dengan benar akan sama cepatnya dan juga akan menyederhanakan kode Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan nilai dari kueri mysql di luar pernyataan kueri?

  2. Kelas pagination PHP

  3. Bagaimana cara menjatuhkan semua tabel dari database dengan manage.py CLI di Django?

  4. Bagaimana cara mengubah hierarki relasional menjadi tabel penutupan di MySQL?

  5. Mendeteksi karakter rusak utf8 di MySQL