带有文本的SQL多列

时间:2017-03-04 14:21:48

标签: sql

我在这里遇到一个小问题。

我需要找出哪部电影有2种类型

SELECT v.explanation
FROM v, g
WHERE   
    g.Video_ID = v.Video_ID AND  
    g.Explanation= "Genre1" AND  
    g.Explanation= "Genre2";

当我只使用一个时,它返回null。

1 个答案:

答案 0 :(得分:1)

首先,始终使用显式JOIN语法。 从不FROM子句中使用逗号。

然后,您可以使用GROUP BYHAVING

来解决您的问题
SELECT v.Bezeichnung  
FROM video v JOIN
     hat_genre g   
     ON g.Video_ID = v.Video_ID  
WHERE g.Bezeichnung IN ('Horror', 'Thriller')
GROUP BY v.Bezeichnung
HAVING COUNT(DISTINCT g.Bezeichnung) = 2;

附加说明:

  • 表别名使查询更易于编写和阅读。
  • 字符串的ANSI标准SQL分隔符是单引号;这比具有其他含义的双引号更可取。
  • IN是测试多个值的最有效方法。