Visa ett inlägg
Oläst 2013-11-06, 18:02 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av naak2803 Visa inlägg
Hej,
jag har lite problem med en query..

UPDATE OfferCode SET status = 1, usedDate = '2013-01-01' WHERE id = (SELECT id FROM OfferCode WHERE code = 'vip' ORDER BY usedDate LIMIT 1)

anledning till att jag väljer att göra så är att db har dubletter av samma "code", och då vill jag endast uppdatera den första raden.

dvs
Kod:
[dbo.OfferCode]
code     status     usedDate 
vip        0           2013-01-01
vip        0           2013-01-01
vip        0           2013-01-01
xxx       0           2013-01-01
yyy       0           2013-01-01
zzz        0           2013-01-01
ERROR [HY000] [MySQL][ODBC 5.1 Driver][mysqld-5.5.34]You can't specify target table 'OfferCode' for update in FROM clause

Det jag är ute efter att kunna uppdatera första raden med "code=vip" och sätta om statusen till "1"

Kod:
[dbo.OfferCode]
code     status     usedDate 
vip        1           2013-01-01
vip        0           2013-01-01
vip        0           2013-01-01
xxx       0           2013-01-01
yyy       0           2013-01-01
zzz        0           2013-01-01
Du har ju ingen primärnyckel i tabellen!!!! Då går det inte att adressera enstaka rader om det finns duplicerade datavärden. Man bygger ALDRIG en relationsdatabas utan primärnyckel!!!

Det är i och för sig en sanning med modifikation eftersom man kan använda ROWID som brukar finnas i alla moderna relationsdatabaser, det är ett unikt id som man kan använda i nödfall, men inget man ska bygga sin applikation på för det funkar olika beroende på vilken databasmotor det är.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat