Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] INSERT INTO `pole`=MIN(`pole`)
Forum PHP.pl > Forum > Bazy danych
cadavre
Witam!
Mam takie oto zapytanie:
  1. INSERT INTO `eventy` SET `order`= (`order`)-1

Niestety jest ono wykonywane z timeoutem (100% CPU usage Apache'a).

Jakie zapytanie wsadzić by w pole `order` dodaj wartość o jeden mniejszą od `order`?

How to do it? rolleyes.gif

------------------------------------------------------------------------------------------------------
EDIT:
Mam tyle:
  1. INSERT INTO `eventy` ( `order` )
  2. SELECT MIN( `order` ) -1
  3. FROM `eventy`
Jednak potrzebuję dodać nie tylko `order` i nie tylko z SELECT'a dane. Coś a'la:
  1. INSERT INTO `eventy` ( `order`,`pole_dwa` )
  2. VALUES ( (SELECT MIN( `order` ) -1
  3. FROM `eventy`),'wartość_pola_2' )
SongoQ
Mozesz w taki sposob. Bo wydaje mi sie ze bezposrednio z tej tabeli nie wstawi i dlatego wystepuje blad.

  1. SET @a = (SELECT MIN( `order` ) -1
  2. FROM `eventy`); INSERT INTO `eventy` ( `order`,`pole_dwa` )
  3. VALUES ( @a,'wartość_pola_2' )
cadavre
Jak najbardziej satysfakcjonuje mnie ta odpowiedź. smile.gif Dzięki wielkie!

Mam jeszcze jedno pytanko dot. SQL: jak zamienić ze sobą dwie kolejne wartości liczbowe (np. 99 i 98)? Jak wiadomo gdy 98 UPDATE'em zrobimy 99 to wtedy będziemy mieć dwie te same wartości 99 i wtedy nie będzie dało się zmienić 99 w 98 bo zmieni obie wartości. Niestety tabela ma tylko wiersz `order` - nie ma żadnych unique'ów z np. ID'ami.
harryk
Zamień najpierw jedną wartość (np. 99) na taką, która w bazie nie istnieje (przykładowo: 999), następnie zamień wartość 98 na 99, a wartość 999 na 98.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.