Ich habe eine Berichtstabelle in meiner Datenbank. Ich führe eine komplexe Abfrage aus und ich möchte eindeutige Bericht-IDs aus dem Ergebnis zählen.mysql DISTINCT und Rails uniq einzigartige Datensätze zu finden
kann ich tun, dass die zwei Möglichkeiten, mit:
ich
DISTINCT
in mysql Abfrage wieselect count(DISTINCT id) from reports where ...
verwende ich den Einsatz von Rails uniq Methode auf dem Ergebnis der Ausführung rohe SQL-Abfrage machen.
Aber diese beiden Nummern unterscheiden sich.
Auch, wenn ich LIMIT(n) with DISTINCT query (#1)
verwende, stimmen diese beiden Zahlen überein. Ich bin mir nicht sicher warum das passiert! Für diese Spalte in meiner Tabelle sind keine NULL-Werte vorhanden.
Dies ist die mysql query:
select count(distinct report_id)
from table1 cas
where not exists (select 1
from table2 t
where t.report_id = cas.report_id
and t.point_id = cas.point_id);
Rails query:
ActiveRecord::Base.connection.execute("select report_id
from table1 cas
where not exists (select 1
from table2 t
where t.report_id = cas.report_id
and t.point_id = cas.point_id);").to_a.flatten.uniq.count
'Ich verwende Rails uniq-Methode auf das Ergebnis der Ausführung von Raw-SQL-Abfrage. Enthält Ihre Raw-Abfrage nur 'ID' oder andere Spalten? – lad2025
könnten Sie die Frage mit Beispiel sqls elabobate? –
Mysql-Abfrage hinzugefügt. –