/ / ¿Cuáles son las diferencias entre DISTINCT (c1), c2 y DISTINCT c1, c2 - mysql?

¿Cuáles son las diferencias entre DISTINCT (c1), c2 y DISTINCT c1, c2 - mysql

Como dice el título, ¿cuáles son las diferencias entre DISTINCT(c1), c2 y DISTINCT c1, c2?

Es el DISTINCT(c1) como una función? No encontré ningún manual mencionando DISTINCT Puede ser una función.

Muestra de salida:

mysql> create table t1(c1 int, c2 int);
Query OK, 0 rows affected (0.26 sec)

mysql> insert into t1 values(1,1),(1,2),(2,4),(2,2),(2,4);
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select c1, c2 from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
|    2 |    4 |
+------+------+
5 rows in set (0.00 sec)

mysql> select distinct(c1), c2 from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
+------+------+
4 rows in set (0.00 sec)

mysql> select distinct c1, c2 from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
+------+------+
4 rows in set (0.00 sec)

Respuestas

1 para la respuesta № 1

Hmmm La diferencia es que la select distinct (c1), c2 Tiene paréntesis adicionales, innecesarios en el select cláusula.

DISTINCT es no Una función u operador en SQL. Es un tipo de SELECT declaración y se aplica a todas las columnas en el SELECT. Los paréntesis no tienen relevancia.

Se puede pensar de la misma manera que la ALL en UNION ALL.


1 para la respuesta № 2

No, distinto no es como una función! Es solo un tipo de selección que es similar a lo que está haciendo la cláusula GROUP BY.

Distinct siempre se aplicará en toda la fila / todas las columnas especificadas en la selección, por lo que no importa si agrega paréntesis o no.

Es preferible no hacerlo entre paréntesis porque será más difícil de leer y entender y puede inducir a error a la misma pregunta que hizo aquí; se aplica solo en la columna.