Обсуждение: UPDATE and SELECT result difference

Поиск
Список
Период
Сортировка

UPDATE and SELECT result difference

От
"Enrico Mangano"
Дата:
Hi all,

of course I'm too drunk, or simply I'm missing something, but
I can't understand the difference beetwen the results of these
2 queries:

targhettariodb=# UPDATE temp_principale
targhettariodb-# SET cda_istat = acxx_aziende_istat.cda_istat ,
targhettariodb-#        prg_istat = acxx_aziende_istat.prg_istat
targhettariodb-# WHERE acxx_aziende_istat.cda_azienda =
temp_principale.cda_azienda;
UPDATE 1727
targhettariodb=# SELECT count(*)
targhettariodb-# FROM acxx_aziende_istat,temp_principale
targhettariodb-# WHERE acxx_aziende_istat.cda_azienda =
temp_principale.cda_azienda;
count
-------
 1929
(1 row)

why this difference in the number of rows?

(
 targhettariodb=# SELECT count(*)
 targhettariodb-# FROM acxx_aziende_istat, temp_principale
 targhettariodb-# WHERE
 targhettariodb-# acxx_aziende_istat.cda_azienda is null OR
 targhettariodb-# temp_principale.cda_azienda is null OR
 targhettariodb-# acxx_aziende_istat.cda_istat IS NULL OR
 targhettariodb-# acxx_aziende_istat.prg_istat IS NULL ;
  count
 -------
      0
 (1 row)
)

>psql (PostgreSQL) 7.1.3
>contains readline, history support
>Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
>Portions Copyright (c) 1996 Regents of the University of California
>Read the file COPYRIGHT or use the command \copyright to see the
>usage and distribution terms.

Thanks all.

Regards.

Enrico Mangano
Net Software
________

NETHOUSE S.R.L.
C.so Re Umberto I, 57 - 10128 Torino - Italy
Tel. +39-011-581.581 - Fax +39-011-581.591
http://www.nethouse.it <http://www.nethouse.it/>    -
enrico.mangano@nethouse.it <mailto:enrico.mangano@nethouse.it>


Re: UPDATE and SELECT result difference

От
Jean-Luc Lachance
Дата:
Hello Enrico,

It simply means that there are 202 duplicate rows in acxx_aziende_istat
where acxx_aziende_istat.cda_azienda = temp_principale.cda_azienda.

try :

SELECT cda_azienda, COUNT(*)
FROM acxx_aziende_istat
WHERE EXISTS (
  SELECT * FROM temp_principale
  WHERE acxx_aziende_istat.cda_azienda = temp_principale.cda_azienda)
GROUP BY cda_azienda
HAVING COUNT(*) > 1;

jll


Enrico Mangano wrote:
>
> Hi all,
>
> of course I'm too drunk, or simply I'm missing something, but
> I can't understand the difference beetwen the results of these
> 2 queries:
>
> targhettariodb=# UPDATE temp_principale
> targhettariodb-# SET cda_istat = acxx_aziende_istat.cda_istat ,
> targhettariodb-#        prg_istat = acxx_aziende_istat.prg_istat
> targhettariodb-# WHERE acxx_aziende_istat.cda_azienda =
> temp_principale.cda_azienda;
> UPDATE 1727
> targhettariodb=# SELECT count(*)
> targhettariodb-# FROM acxx_aziende_istat,temp_principale
> targhettariodb-# WHERE acxx_aziende_istat.cda_azienda =
> temp_principale.cda_azienda;
> count
> -------
>  1929
> (1 row)
>
> why this difference in the number of rows?
>
> (
>  targhettariodb=# SELECT count(*)
>  targhettariodb-# FROM acxx_aziende_istat, temp_principale
>  targhettariodb-# WHERE
>  targhettariodb-# acxx_aziende_istat.cda_azienda is null OR
>  targhettariodb-# temp_principale.cda_azienda is null OR
>  targhettariodb-# acxx_aziende_istat.cda_istat IS NULL OR
>  targhettariodb-# acxx_aziende_istat.prg_istat IS NULL ;
>   count
>  -------
>       0