Kom ihåg mig?
Home Menu

Menu


Sql update

 
Ämnesverktyg Visningsalternativ
Oläst 2012-07-11, 18:37 #1
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Standard Sql update

Varför blir detta fel? Får man inte göra LIMIT på UPDATE?
UPDATE teams_players SET level = 1 WHERE level = 0 AND team_id = {$team_id} ORDER BY joined ASC LIMIT 1

{$team_id} är en siffra
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-11, 20:03 #2
fluortant fluortant är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 33
fluortant fluortant är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 33
Vad får du för felmeddelande?
fluortant är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-11, 20:06 #3
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Beror på vilken databas du kör.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-11, 20:09 #4
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
ORDER BY i en UPDATE känns fel?
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-11, 20:39 #5
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av nosnaj Visa inlägg
ORDER BY i en UPDATE känns fel?
I MySQL fungerar det fint.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-11, 20:44 #6
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Tror nog att du får hämta ID't första med en order by och limit och sedan köra en update på just det ID't
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-12, 00:55 #7
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 frecka Visa inlägg
Varför blir detta fel? Får man inte göra LIMIT på UPDATE?
UPDATE teams_players SET level = 1 WHERE level = 0 AND team_id = {$team_id} ORDER BY joined ASC LIMIT 1

{$team_id} är en siffra

Du borde använda en subselect för att det ska funka bra:

Kod:
UPDATE teams_players SET level = 1 
WHERE level = 0 
AND team_id = {$team_id} 
AND  joined = (Select joined FROM teams_players ORDER BY joined ASC LIMIT 1)
Vet inte riktigt vad vill ha men det kan även vara så här:

Kod:
UPDATE teams_players SET level = 1 
WHERE level = 0 
AND team_id = {$team_id} 
AND  joined = 
(
    Select joined 
    FROM teams_players
    WHERE level = 0 
    AND team_id = {$team_id} 
    ORDER BY joined ASC LIMIT 1
)


Eller nåt i den stilen....
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-12, 09:18 #8
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Subqueries bör undvikas så långt det är möjligt.

Citat:
UPDATE teams_players SET level = 1 WHERE level = 0 AND team_id = 1 ORDER BY joined ASC LIMIT 1
Det där fungerar som sagt var utmärkt i MySQL, åtminstone i senare versioner.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-12, 22:01 #9
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
Då frecka verkar inte svara i tråden, kan jag kan flika förbi bara lite snabbt och fråga en sak.

Går det bra att använda flera "order by"?

Typ:

SELECT * FROM tabellnamn WHERE kolumn = 1 ORDER BY kolum1 ASC AND kolumn2 ASC LIMIT 20;

?
jonssondesign är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-13, 00:27 #10
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Ursprungligen postat av jonssondesign Visa inlägg
Då frecka verkar inte svara i tråden, kan jag kan flika förbi bara lite snabbt och fråga en sak.

Går det bra att använda flera "order by"?

Typ:

SELECT * FROM tabellnamn WHERE kolumn = 1 ORDER BY kolum1 ASC AND kolumn2 ASC LIMIT 20;

?
Det fungerar så här:
Kod:
SELECT * FROM table WHERE column = 1 ORDER BY column1 ASC , column2 DESC LIMIT 10;
Den kommer att sortera på column1 först så att de värderna kommer först, och sortera på column2 efteråt.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 04:09.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017