Citat:
Ursprungligen postat av naak2803
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.