SQL,помощ...

7 отговора 449 прегледа
#1

SQL,помощ...

Моля да ми помогнете с една "домашна работа".
Мислех, че едно нещо е лесно, ама ...дуки. Имам един
прост рекордсет получен от прост SELECT.

SELECT F1, F2, F3.... FROM ANYTABLE

Искам обаче горния SELECT да го направя така, че резултатния
рекордсет да е уникален по едно от полетата, примерно F1.
Но искам да ги има и другите полета !!!.

Кажете как да стане.

Отговор
в отговор на Пaвeл #2

Re: SQL,помощ...

И какво точно искаш да има в другите колонки?

Например за таблица


1, 1, 1
1, 2, 3
2, 2, 2
2, 3, 4

ако искаш първата колонка да ти е уникална ще получиш само два реда нали така?
И кои точно от тези 4 реда искаш да получиш?

salle.online.bg/sig
Отговор
в отговор на salle #3

Re: ако не ти пука ..

SELECT f1, f2, f3 FROM tbl GROUP BY f1;

Имай предвид обаче, че това не се допуска от стандарта т.е. ще работи само в някои СУБД и че стойностите на f2 и f3 се взимат от случаен ред.

Може да получиш
1,1,1
2,2,2

или пък
1,2,3
2,3,4

или пък
1,1,1
2,3,4

така, че резултатът става непредвидим

salle.online.bg/sig
Отговор
в отговор на salle #4

Re: ако не ти пука ..

Наистина не ми пука, какво точно има в другите полета...

Отговор
в отговор на Пaвeл #5

Re: ако не ти пука ..

Е за какво тогава искаш да ги select-ваш и другите полета??

Отговор
в отговор на Formal #6

Re: UPDATE Formal SET beer=beer+1;



salle.online.bg/sig
Отговор
в отговор на salle #7

А няма ли

нещо от сорта:
do
{
UP=more_beer();
}while(UP);

Bеer? Moooorrre?
Отговор
в отговор на Пaвeл #8

Re: SQL,помощ...

select f1,min(f2), min(f3)
from test
group by f1;

Resultat:
F1 MIN(F2) MIN(F3)
----- ---------- ----------
1 1 1
2 2 1
3 1 1
4 1 7
45 1 8


Dannite v table test
select * from test;

F1 F2 F3
--- ---------- ----------
1 1 1
2 2 1
2 2 3
1 6 7
2 2 2
2 2 2
3 1 1
3 2 2
4 1 7
2 5
3 5 6
45 1 8

Отговор