Ich möchte Datensätze von '2013-04-01 00:00:00'
bis 'today'
auswählen, aber jeder Tag hat viel Wert, weil sie alle 15 Minuten einen Wert speichern , also möchte ich nur den ersten oder letzten Wert von jedem Tag.SQL: Wie wählen Sie einen Datensatz pro Tag, vorausgesetzt, dass jeden Tag mehr als 1 Wert enthalten MySQL
Tabellenschema:
CREATE TABLE IF NOT EXISTS `value_magnitudes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` float DEFAULT NULL,
`magnitude_id` int(11) DEFAULT NULL,
`sdi_belongs_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`reading_date` datetime DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1118402 ;
Bad SQL:
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-01 00:00:00' AND '2013-04-02 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-02 00:00:00' AND '2013-04-03 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-03 00:00:00' AND '2013-04-04 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-04 00:00:00' AND '2013-04-05 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
SELECT value FROM `value_magnitudes` WHERE `value_magnitudes`.`reading_date` BETWEEN '2013-04-05 00:00:00' AND '2013-04-06 00:00:00' AND (`value_magnitudes`.magnitude_id = 234) LIMIT 1
etc ...
ich alle wollen in einer möglichen, wenn ...
Danke sehr.
EDIT: Ich meine, ich habe eine Abfrage pro Tag, aber ich möchte nur eine einzelne Abfrage machen von reading_date >= '2013-04-01 00:00:00'
c
EDIT2: Ich habe 64.260 Aufzeichnungen in diesen table.value_magnitudes
und Es dauert sooooooooo lang, um diese Abfrage auszuführen und zu antworten, und manchmal eine Zeitüberschreitung.
tun können, aber wenn ich tun, dass ich für jeden Tag eine Abfrage tun, bis ich heute erreichen, ist es möglich, in einer Abfrage? Vielen Dank. – rokimoki
Ja, lassen Sie das Datum in der Where-Bedingung. Ich habe meine Antwort aktualisiert. –
Aham, aber ich wollte ab X Datum, bis heute, also wäre es so etwas wie 'reading_date> = '2013-04-01 00: 00: 00'' – rokimoki