MariaDB中的INTERSECT查询

问题描述 投票:0回答:2

我在MariaDB语言中遇到此查询的问题。我想与相同的字段进行交叉,但有两个值。问题是我无法使用INTERSECT查询。

我该怎么做??我尝试过存在和内部连接,但它仍然无效。

SELECT nombre 
FROM actores 
WHERE codactor IN ( SELECT actor 
                    FROM participacion 
                    WHERE (titulo,año) IN (SELECT titulo, año 
                                           FROM peliculas 
                                           WHERE director IN (
                                                SELECT coddirector 
                                                FROM directores d 
                                                WHERE d.nombre='Alejandro' 
                                                 AND d.apellido='Amenabar')))

INTERSECT

SELECT nombre 
 FROM actores 
 WHERE codactor IN ( SELECT actor 
                     FROM participacion 
                     WHERE (titulo,año) IN (SELECT titulo,año 
                                            FROM peliculas  
                                            WHERE director in ( 
                                                  SELECT coddirector 
                                                  from directores p 
                                                  WHERE  p.nombre='Pedro' 
                                                   AND p.apellido='Almodobar')));
mysql database mariadb intersection intersect
2个回答
0
投票

首先尝试这样,检查你有所有的演员。我必须添加编码器,以防你有同名的演员。

SELECT a.codactor, a.nombre -- add ', *'  to see all columns and test query is ok. 
FROM actores a
JOIN participacion p
  ON a.codactor = p.actor
JOIN peliculas m 
  ON p.titulo = m.titulo
 AND p.ano = m.ano
JOIN directores d
  ON p.director = d.coddirector
WHERE (d.nombre = 'Alejandro' and d.apellido = 'Amenabar')
   OR (d.nombre = 'Pedro'     and d.apellido = 'Almodobar')

然后添加GROUP BY以查看两位导演的电影中的哪位演员。

GROUP BY a.codactor, a.nombre
HAVING COUNT(DISTINCT coddirector) = 2

1
投票

INTERSECT是在MariaDB 10.3.0中引入的。

相交

交叉的结果是左右SELECT结果的交集,即只有两个结果集中存在的记录才会包含在操作结果中。

(SELECT e_name AS name, email FROM employees)
INTERSECT
(SELECT c_name AS name, email FROM customers);

至于你的查询,你可以保持原样。

© www.soinside.com 2019 - 2024. All rights reserved.