Citat:
kiklop74: @Nikola
Da li neko uopste proba query pre slanja?
99% ovoga sto sam ja do sada video na forumu - NE!
e sada, ako hoces da "probaju pa posalju" olaksas im zivot :D ... napravis im jedan "create table .. insert into ..." da mogu da copy/paste u svoj mysql pa da probaju, ovako radije bustuju broj postova sa idejama i ocekuju da ti probas :D ...
za razliku od 90% op-ova sa slicnim problemom, ti si se bar iscimao da vratis nazad feedback o tome sta su poslali :)
ako pogledas negde iznas mislim da sam napisao u kom pravcu treba da probas da napravis upit (ja sam malo u frci pa ne mogu sad da probam sve to - dok napravim tabele, dok napunim ..) .. dakle svodi se na left join tabele same sa sobom po kriticnom polju i filtriranje duplikata sa isnull (ako radis left join po polju koje hoces da bude unique desna tabela ce imati null vrednost za to polje) ..
(obrati paznju da je pitanje da li ce biti bolje od onog resenja sa exist mada bi trebalo da je brze)
na primer:
priprema
Code:
mysql> use es
Database changed
mysql> create table x (id int auto_increment primary key, a int, b int) engine=myisam;
Query OK, 0 rows affected (3.95 sec)
mysql> insert into x (a,b) values (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10), (3,3), (4,4), (5,5), (6,6);
Query OK, 14 rows affected (0.00 sec)
Records: 14 Duplicates: 0 Warnings: 0
mysql> select a, count(*) c from x group by a having c>1 order by a;
+------+---+
| a | c |
+------+---+
| 3 | 2 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |
+------+---+
4 rows in set (0.00 sec)
dakle duplikata koliko volis :D
ako sam te dobro svatio, ti hoces duplikate:
Code:
mysql> select p.id, p.a as nonunique_values from x p left join x q on p.a=q.a and p.id <> q.id where !isnull(q.a) order by p.id;
+----+------------------+
| id | nonunique_values |
+----+------------------+
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 11 | 3 |
| 12 | 4 |
| 13 | 5 |
| 14 | 6 |
+----+------------------+
8 rows in set (0.00 sec)
mysql> select p.id, p.a as unique_values from x p left join x q on p.a=q.a and p.id <> q.id where isnull(q.a) order by p.id;
+----+---------------+
| id | unique_values |
+----+---------------+
| 1 | 1 |
| 2 | 2 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | 10 |
+----+---------------+
6 rows in set (0.00 sec)
ovakav join bi trebalo da radi znacajno brzi od ... HAVING COUNT(*)>1 ...