SQL,помощ...
7 отговора
449 прегледа
SQL,помощ...
Моля да ми помогнете с една "домашна работа".
Мислех, че едно нещо е лесно, ама ...дуки. Имам един
прост рекордсет получен от прост SELECT.
SELECT F1, F2, F3.... FROM ANYTABLE
Искам обаче горния SELECT да го направя така, че резултатния
рекордсет да е уникален по едно от полетата, примерно F1.
Но искам да ги има и другите полета !!!.
Кажете как да стане.
Мислех, че едно нещо е лесно, ама ...дуки. Имам един
прост рекордсет получен от прост SELECT.
SELECT F1, F2, F3.... FROM ANYTABLE
Искам обаче горния SELECT да го направя така, че резултатния
рекордсет да е уникален по едно от полетата, примерно F1.
Но искам да ги има и другите полета !!!.
Кажете как да стане.
Re: SQL,помощ...
И какво точно искаш да има в другите колонки?
Например за таблица
1, 1, 1
1, 2, 3
2, 2, 2
2, 3, 4
ако искаш първата колонка да ти е уникална ще получиш само два реда нали така?
И кои точно от тези 4 реда искаш да получиш?
salle.online.bg/sig
Например за таблица
1, 1, 1
1, 2, 3
2, 2, 2
2, 3, 4
ако искаш първата колонка да ти е уникална ще получиш само два реда нали така?
И кои точно от тези 4 реда искаш да получиш?
salle.online.bg/sig
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
Имай предвид обаче, че това не се допуска от стандарта т.е. ще работи само в някои СУБД и че стойностите на f2 и f3 се взимат от случаен ред.
Може да получиш
1,1,1
2,2,2
или пък
1,2,3
2,3,4
или пък
1,1,1
2,3,4
така, че резултатът става непредвидим
salle.online.bg/sig
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
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