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

Permintaan MySQL yang kompleks memberikan hasil yang salah

select * from (
    select a.idArticle, a.content, max(`order`) max_order
    from words_learned wl
    join words w on w.idwords = wl.idwords
    join article a on a.idArticle = w.idArticle
    where wl.userId = 4
    group by a.idArticle
) a
left join (
    select count(*) unknown_count, w2.idArticle from words w2
    left join words_learned wl2 on wl2.idwords = w2.idwords
    and wl2.userId =  4
    where wl2.idwords is null
    group by w2.idArticle
) unknown_counts on unknown_counts.idArticle = a.idArticle
where unknown_count is null or unknown_count < 10
order by max_order desc
limit 100

http://sqlfiddle.com/#!2/6944b/9

Tabel turunan pertama memilih artikel unik yang diketahui pengguna tertentu dari satu kata atau lebih serta order maksimum nilai kata-kata itu. Nilai pesanan maksimum digunakan untuk mengurutkan hasil akhir agar artikel yang mengandung kata urutan tinggi muncul lebih dulu.

Tabel turunan kedua menghitung jumlah kata yang tidak diketahui pengguna tertentu untuk setiap artikel. Tabel ini digunakan untuk mengecualikan artikel apa pun yang berisi 10 kata atau lebih yang tidak diketahui pengguna.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Database:Membuat Log tindakan, bagaimana menangani berbagai referensi?

  2. com.mysql.jdbc.PacketTooBigException java

  3. Grup Hasil Acak MySQL Berdasarkan Pesanan Oleh

  4. Pilih SUM dari subquery saat menggunakan whereHas di Laravel

  5. Cara Membaca File Log Biner MySQL (BinLog) dengan mysqlbinlog