Ошибка пересечения SQL ОШИБКА 1064 (42000):

   create table PlatonicForms (name varchar(20), sides integer(3));
   create table Colors (hex varchar(6), color varchar(20));
   create table MorePlatonics (name varchar(20), sides integer(3));
   create table ShapesColors(color varchar(20), shape varchar(20));

Я пытаюсь использовать этот пересечение

SELECT *
FROM PlatonicForms
INTERSECT
SELECT *
FROM MorePlatonics;

но я получаю эту ошибку

ОШИБКА 1064 (42000): ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с «SELECT * FROM MorePlatonics» в строке 3.

Я не знаю, что я делаю неправильно


person Andrew Echeverria    schedule 02.11.2020    source источник
comment
Я удалил тег sql-server, так как это явно MySQL из-за того, что DDL использует integer(3) и ошибку. Это, однако, показывает, почему важно знать свою СУБД, поскольку, согласно быстрому запросу Google, MySQL не поддерживает INTERSECT.   -  person Larnu    schedule 02.11.2020


Ответы (1)


mysql не поддерживает синтаксис INTERSECT, попробуйте следующее:

 SELECT DISTINCT 
   name,sides 
FROM PlatonicForms
   INNER JOIN MorePlatonics USING(name,sides);
person Journey Ng    schedule 02.11.2020