MySQL IF
Sabine
- datenbank
Hallo
SELECT * test_tabelle
OK
SELECT * FROM test_tabelle WHERE test_spalte = 'test1'
OK
SELECT * FROM test_tabelle WHERE test_spalte = 'test1' OR test_spalte = 'test2'
OK
SELECT * FROM test_tabelle WHERE IF(test_spalte = 'test1', 'test_spalte = 'test2'')
Nicht OK
Warum ?
MySQL Version 4.0.20-standard
http://dev.mysql.com/doc/mysql/en/control-flow-functions.html hilft auch nicht
Sabine
Hallo
SELECT * test_tabelle
OKSELECT * FROM test_tabelle WHERE test_spalte = 'test1'
OKSELECT * FROM test_tabelle WHERE test_spalte = 'test1' OR test_spalte = 'test2'
OKSELECT * FROM test_tabelle WHERE IF(test_spalte = 'test1', 'test_spalte = 'test2'')
Nicht OKWarum ?
Versuchs mal mit SELECT * FROM test_tabelle WHERE test_spalte = 'test1' AND 'test_spalte = 'test2'
SELECT * FROM test_tabelle WHERE test_spalte = 1 OR test_spalte = 2
OK
SELECT * FROM test_tabelle WHERE IF(test_spalte = 1, 'test_spalte = 2')
Nicht OK
auch mit zahlen geht kein IF, es liegt also nicht an ''
ich benötige aber IF für ein komplexere sql-statement
sabine
Hallo,
SELECT * FROM test_tabelle WHERE IF(test_spalte = 1, 'test_spalte = 2')
Nicht OK
das sieht für mich so aus, daß hier - bei der if() Funktion - der dritte Parameter fehlt.
http://dev.mysql.com/doc/mysql/en/control-flow-functions.html
Ich weiß aber auch nicht, ob eine solche if-Funktion im where-clause funktioniert. In einem solchen Fall würde ich eher ein UNION verwenden, und/oder mir mal Gedanken über das DB-Design machen.
Während das if-Statement eine ganz andere Struktur hat.
http://dev.mysql.com/doc/mysql/en/if-statement.html
cu,
ziegenmelker
Hallo,
Ich versuche mal dein Problem zu verstehen,
du willst aus test_tabelle alle zeilen mit test_spalte = 'test2', wobei 'test2' mit 'test1' ersetzt werden soll.
Hab sowas noch nie gemacht aber ich meine so ein query sollte funktionieren:
SELECT 'test2' as test_spalte, * FROM test_tabelle WHERE test_spalte = 'test1'
Ups hab test1 und test2 im Query durcheinandergebracht ^^'
yo,
SELECT * FROM test_tabelle WHERE IF(test_spalte = 'test1', 'test_spalte = 'test2'')
Nicht OK
zum einen fehlt die fehlermeldung, die du bekommst. die ist immer hilfreich dabei. zum anderen kann deine query so nicht funktionieren, semantisch und syntaktisch nicht. ich bin mir nicht ganz sicher, was du erreichen willst. aber meine kristall-kugel schlägt mir folgendes vor.
SELECT IF(test_spalte = 'test1', 'test2', test_spalte) AS Spalte
FROM test_tabelle
WHERE test_spalte = 'test1' OR test_spalte = 'test2'
Ilja
Hi Ilja,
ich bin mir nicht ganz sicher, was du erreichen willst. aber meine kristall-kugel schlägt mir folgendes vor.
SELECT IF(test_spalte = 'test1', 'test2', test_spalte) AS Spalte
FROM test_tabelle
WHERE test_spalte = 'test1' OR test_spalte = 'test2'
da würde die Ergebnismenge wohl nur aus 'test2' bestehen - ob es wirklich das ist, was Sabine möchte?
Ich weiß es aber auch nicht ;-)
Gruß,
Andreas.
Hallo Sabine,
IF in der WHERE-Klausel funktioniert leider nicht - deine Idee hatte ich auch schon ;-)
Pit