如何查询具有sql数据库中所有指定单词的歌曲?

时间:2017-11-25 20:41:47

标签: java mysql sql

我有一个歌曲及其单词的数据库: 序列号,姓名,字词。

主键是串行的。
Word列只包含一个单词。

我想用他们的话来查询包含所有单词的歌曲:“我爱你” 如何在SQL中执行此操作?

顺便说一句,我使用java来执行语句,所以如果有任何内置查询的帮助,它也可以是好的。

数据库行的例子:
1 name1 love
1 name1 you
1 name1 why
1 name1 I
2 name2 love
2 name2 what
2 name2 we

3 个答案:

答案 0 :(得分:0)

你可以尝试三次使用WHERE EXISTS来表达我,爱和你。如果单词重复多次,您可能需要DISTINCT。

SELECT DISTINCT Serial, Name
  FROM WordsTable WT1
 WHERE EXISTS (SELECT * FROM WordsTable WT2 WHERE WT1.Serial = WT2.Serial
                                              AND WT1.Name = WT2.Name
                                              AND WT2.Word = 'I')
   AND EXISTS (SELECT * FROM WordsTable WT2 WHERE WT1.Serial = WT2.Serial
                                              AND WT1.Name = WT2.Name
                                              AND WT2.Word = 'love')
   AND EXISTS (SELECT * FROM WordsTable WT2 WHERE WT1.Serial = WT2.Serial
                                              AND WT1.Name = WT2.Name
                                              AND WT2.Word = 'you');

答案 1 :(得分:0)

Select name 
  from my_table 
 where word in ('i','love','you') 
 group 
    by name 
having count(distinct word) = 3;

答案 2 :(得分:-1)

SELECT * from [tablename]
WHERE word LIKE '%I love you%';

此查询将获取在words字段中某处具有完全字符串“I love you”的所有元组。

对于其他Java特定的东西,我建议您查看预处理语句(帮助防止SQL注入)

https://www.javatpoint.com/PreparedStatement-interface