Anzeige

Datenbankabfrage - genau jeder zehnte Eintrag mittels select ausgeben...


loddarmattheus

Erfahrenes Mitglied
#1
Guten Morgen,

wir haben eine Database (MySQL) mit mehreren tausend Einträgen.
Kann mir bitte jemand sagen, wie ich genau nur jeden zehnten Eintrag auslesen kann?

Besten Dank vorab.
 

basti1012

Erfahrenes Mitglied
#4
Trickse doch etwas rum. Laß dir jeden Eintrag anzeigen , in den bei der ID ,eine 0 vorkommt. So hast du auch jeden 10 Eintrag. Oder besser wäre die durch 10 Teilbar ist,
 
#6
Wenns wirklich mit SQL sein muss:

Zuerst die Zeilen durchnummerieren und dann nur diejengen nehmen, die durch 10 teilbar sind
SQL:
select
	t2.*
from
	(
		select 
			@row_num := @row_num + 1 as row_num,
			t1.*,
		from 
			my_table t1, 
			(select @row_num := 0) vars
	) t2
where
	mod(t2.row_num, 10) = 0
 

Fragenfrager

Erfahrenes Mitglied
#7
Was Yaslaw schreibt.
Aber muss bei MySQL die Variable nicht erst vorher initialisiert werden? Ich mache normalerweise kein MySQL. Es würde dann vorher ein
SET @row_num:=0;
fehlen.
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
#9
Und jetzt verwirre ich wieder alle, und werfe nen Schraubenschlüssel ins Getriebe:
Seit wann garantiert MySQL (oder auch andere DBMS) eine Reihenfolge, wenn man keine ORDER BY angibt?
 
#11
Das mit den Zeilen durchnummerieren und dann die durch 10 teilbaren Einträge auswählen probier ich mal aus. Dummerweise sind die Datensätze noch nicht durchnummeriert, sondern sind durch den Timestamp "unique".

Unbenannt-1.jpg

Ich hatte schon daran gedacht, mit der where time like '00' zu arbeiten, aber da fallen auch die 5 Minuten Datensätze drunter.
 
#14
Einfach noch nach Zeit sortieren. Ich mach mal absteigend (desc)
SQL:
select
	t2.*
from
	(
		select 
			@row_num := @row_num + 1 as row_num,
			t1.*
		from 
			my_table t1, 
			(select @row_num := 0) vars
		order by
			t1.zeit desc
	) t2
where
	mod(t2.row_num, 10) = 0
 
Anzeige

Neue Beiträge

Anzeige