MariaDB中的INTERSECT查询

时间:2016-12-13 13:19:56

标签: mysql database mariadb intersection intersect

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

我该怎么办?我尝试过存在和内部联接,但它仍然无法正常工作。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laurent Doucet — Graphic designer</title>
    <meta name="description" content="—">
    <link rel="icon" href="img/favicon.png">
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/fonts.css" rel="stylesheet">

2 个答案:

答案 0 :(得分:1)

在MariaDB 10.3.0中引入了

INTERSECT

  

<强> INTERSECT

     

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

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

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

答案 1 :(得分: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