Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Rozwiązanie do znajdowania duplikatów rekordów dotyczących STI i relacji rodzic-dziecko

Wygląda na to, że poniższy kod SQL załatwia sprawę

big_query = "
  SELECT EXISTS (
    SELECT 1
    FROM buyables b1
      JOIN buyables b2
        ON b1.shop_week_id = b2.shop_week_id
        AND b1.location_id = b2.location_id
    WHERE
      b1.parent_id != %1$d
      AND b2.parent_id = %1$d
      AND b1.type = 'Item'
      AND b2.type = 'Item'
    GROUP BY b1.parent_id
    HAVING COUNT(*) = ( SELECT COUNT(*) FROM buyables WHERE parent_id = %1$d AND type = 'Item' )
  )
"

Dzięki ActiveRecord możesz uzyskać ten wynik za pomocą select_value :

class Basket < Buyable
  def has_duplicate
    !!connection.select_value( big_query % id )
  end
end

Nie jestem jednak pewien wydajności



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy możesz wykonać pętlę For Each Row za pomocą MySQL?

  2. Wyszukiwanie pełnotekstowe MySQL, dlaczego otrzymuję nieprawidłowe argumenty do dopasowania?

  3. jak zapisać wartość wyliczenia do DB z Hibernate?

  4. Jak zainstalować MySQL Workbench na Ubuntu?

  5. Jak wybrać dane z tabeli par klucz-wartość