es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

COLLATE Norwegian_100_CI_AI (cultura noruega) con DISTINCT error “los elementos ORDER BY deben aparecer en la lista de selección si SELECT DISTINCT está especificado”.

Estoy recibiendo un error al usar Norwegian_100_CI_AI con DISTINCT al utilizar la cultura noruega con DISTINCT.

Los elementos ORDER BY deben aparecer en la lista SELECT si se especifica SELECT DISTINCT.

Si cambio la cultura a DEFAULT o la elimino, se ejecutará la consulta. Por favor, ayúdame.

CREATE TABLE Test1
(ID INT,
NAME VARCHAR(200)
)```

```sql
INSERT INTO Test1 (ID, NAME) 
VALUES (1, 'T1'), (2, 'T2'), (3, 'T3'), (4, 'T4'), (5, 'T5'), (6, 'T6'), (7, 'T7'), (8, 'T8'), (9, 'T9'), (10, 'T10')
SELECT DISTINCT ID, NAME FROM Test1
ORDER BY NAME COLLATE Norwegian100CI_AI
SELECT DISTINCT ID, NAME FROM Test1
ORDER BY NAME COLLATE Norwegian100CI_AI
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error nos indica que, debido a que estamos utilizando DISTINCT, todas las columnas por las que queremos ordenar también deben incluirse en la declaración SELECT. En este caso, estamos intentando ordenar por la columna NAME utilizando la intercalación Norwegian_100_CI_AI, pero solo estamos seleccionando las columnas ID y NAME.

    Para solucionar esto, podemos incluir la columna NAME en la declaración SELECT:

    SELECT DISTINCT ID, NAME FROM Test1
    ORDER BY NAME COLLATE Norwegian_100_CI_AI, ID
    

    Alternativamente, podemos eliminar la palabra clave DISTINCT si no es necesaria para nuestra consulta:

    SELECT ID, NAME FROM Test1
    ORDER BY NAME COLLATE Norwegian_100_CI_AI, ID
    

    Si deseas cambiar la intercalación a DEFAULT, simplemente puedes eliminar la frase COLLATE Norwegian_100_CI_AI:

    SELECT DISTINCT ID, NAME FROM Test1
    ORDER BY NAME, ID
    

Comments are closed.