sql >> Base de Datos >  >> RDS >> MariaDB

Solucione el error 1064 (42000) al usar el operador MENOS en MariaDB

Hay al menos algunas razones posibles por las que podría estar recibiendo el temido error 1064 (42000) que dice "Tiene un error en su sintaxis SQL...", etc. al intentar usar MINUS operador en MariaDB.

Exploraré estos a continuación y ofreceré algunas soluciones.

Ejemplo del Error

Aquí hay un ejemplo de código que causa el error:

SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT StudentName FROM Students' at line 3

Normalmente, este error se produce cuando tienes un error en tu código. Como dice explícitamente "Tiene un error en su sintaxis SQL".

Sin embargo, esa es solo una de varias posibilidades aquí.

En mi caso, no hay ningún error en mi sintaxis. Tiene que haber otra razón.

A continuación se presentan algunas posibles causas de este error y sugerencias sobre cómo solucionar cada una.

Solución 1

En primer lugar, el MINUS El operador se introdujo en MariaDB 10.6.1. Por lo tanto, si está ejecutando una versión anterior de MariaDB, MINUS operador no funcionará para usted.

En este caso, actualice su instalación de MariaDB a la última versión (o al menos, una versión no anterior a la 10.6.1).

Solución 2

En segundo lugar, el MINUS El operador solo funciona en modo Oracle. Aunque esto no se menciona explícitamente en la documentación de MariaDB, está implícito en la tarea de implementar MINUS operador en MariaDB.

Si ya está ejecutando MariaDB 10.6.1 o posterior, deberá cambiar al modo Oracle antes de usar MINUS operador.

Por lo tanto, ejecute el siguiente código antes de comenzar a usar MINUS operador:

SET sql_mode = "oracle";

Ahora deberías poder usar el MINUS operador en su código.

Solución 3

Si ha hecho todo lo anterior, pero sigue recibiendo un error, es posible que realmente lo haya. un error en su sintaxis.

Por ejemplo, estoy ejecutando MariaDB 10.6.1 en modo Oracle, pero el siguiente código genera el error:

SELECT TeacherName FROM Teachers;
MINUS
SELECT StudentName FROM Students;

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'MINUS

En este caso, accidentalmente incluí un punto y coma después del primer SELECT declaración, que es un error común. Para arreglar esto, simplemente quitaría ese primer punto y coma:

SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;

Resultado:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

¡Éxito!

Solución 4

Si probó todas las soluciones anteriores, pero aún recibe un error, tal vez sea hora de usar EXCEPT operador. El MINUS operador es un sinónimo de EXCEPT , por lo que ambos usan la misma sintaxis y devuelven el mismo resultado.

SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students;

Resultado:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

Solución 5

Si a estas alturas no quieres tener nada que ver con MINUS o EXCEPT , hay otra opción.

Puede utilizar una subconsulta como la siguiente para devolver el mismo resultado:

SELECT 
    DISTINCT TeacherName
FROM Teachers t 
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName);

Obviamente, la consulta exacta que utilice dependerá de su esquema y datos.