我有一个歌曲及其单词的数据库: 序列号,姓名,字词。
主键是串行的。
Word
列只包含一个单词。
我想用他们的话来查询包含所有单词的歌曲:“我爱你” 如何在SQL中执行此操作?
顺便说一句,我使用java来执行语句,所以如果有任何内置查询的帮助,它也可以是好的。
数据库行的例子:
1 name1 love
1 name1 you
1 name1 why
1 name1 I
2 name2 love
2 name2 what
2 name2 we
答案 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注入)