MySQL INSERT INTO IF NOT EXISTS?

Du kannst auch mit einem INSERT.....SELECT das ganze überlisten.
SQL:
INSERT INTO daten (email, datum, feld1)
SELECT d.*
FROM (SELECT 
		'myEmail' AS email,
		'myDate' AS datum,
		'myField1' AS field1) AS d
WHERE 0 IN (SELECT COUNT(*)
				 FROM daten
				 WHERE email = 'myEmail' AND datum NOT LIKE 'HEUTE%')

Wir machen also eine Unterabfrage die uns eine Tabelle mit einer Zeile und allen Werten ausgibt.
Im Haubtselect nehmen wir diese Unterabfrage (d) und kontrollieren im WHERE-Teil ob bereits Daten in der Zeiltabelle vorhanden sind.
 
Zuletzt bearbeitet von einem Moderator:
SQL:
INSERT INTO kp_test (`email`, `date`, `nachricht`)
SELECT d.*
FROM (SELECT
        'test@test.de' AS `emai`,
        '2010-03-07' AS `date`,
        'test4' AS `nachricht`) AS d
WHERE '' IN (SELECT COUNT(*)
                 FROM kp_test
                 WHERE `email` = 'test@test.de' AND `date` LIKE '2010-03-07%')

So sieht es aus die Lösung und ob sie in der Praxis das macht was sie soll werde ich bei der nächsten großen Aktion sehen wo viele Kunden rein kommen.

Erstmal ein großes danke an alle helfenden.

Setze dann das Thema auf gelöst und hoffe es nicht nochmal wecken zu müssen ;)
 
Zuletzt bearbeitet von einem Moderator:
Hallo ihr,

Ich möchte da mal ein sehr altes Thema nocheinmal aufgreifen!

Leider verstehe ich den contex des vorherigen Problemes nicht genau und wollte um unterstützung bitten!

ich will 6 einträge in meine Datenbank machen davon soll einer auf existenz überprüft werden,... sollte dieser schon vorhanden sein, soll nichts gemacht werden wenn nicht soll alles eingetragen werden!

PHP:
INSERT INTO 
			".$db." (
				sid,
				buch, 
				kapitel, 
				position, 
				verse, 
				text
			) VALUES (
				'".$sid."',
				'".$buch."', 
				'".$kapitel."', 
				'".$position."', 
				'".$verse."', 
				'".$text."'
			)";

sid soll auf existenz geprüft werden!

Danke
 
Zurück