2016-11-26 64 views
1

因此,我有这个AOL搜索查询(2006)的大型泄露数据库 - 让我们称之为QD - 和一列包含所有我正在寻找在每个这些查询中的关键字。OracleSQL如何在包含关键字列表中的关键字的大型数据库中搜索条目

我试着这样做:

SELECT 
    keywords.keywords AS Keyword, 
    COUNT(QD.query) AS Amount 
FROM QD, keywords 
WHERE QD.query LIKE ('%' keywords.keywords '%') 
GROUP BY keywords.keywords 
ORDER BY COUNT(QD.query) DESC; 

但是,不知怎的,不能正常工作。 任何想法?

+1

这是什么意思 “不工作”?它是否返回错误的结果,没有结果或错误消息(哪个)? –

+0

00907. 00000 - “缺少右括号” *原因: *动作: 第4行第41行 – Habubuga

+0

尝试连接like - 'LIKE('%'|| keywords.keywords ||'%')的参数' 。 –

回答

1

Oracle版本:

SELECT 
    k.keywords AS Keyword, 
    count(k.keywords) AS Amount 
FROM keywords AS k 
JOIN QD AS q 
    ON q.query LIKE ('%' || t2.kwords || '%') 
GROUP BY k.keywords 
ORDER BY count(k.keywords) DESC; 

非常小心使用的情况下,Tabletable,如果你使用"table"那么你不能没有"围绕使用它。(或者至少它看起来像那个)


MySQL的一个,:

好吧,我想我得到了它,使用JOIN的:

SQL Fiddle

查询1

SELECT 
    k.keywords AS Keyword, 
    count(*) AS Amount 
FROM keywords k 
INNER JOIN QD q 
    ON q.query LIKE CONCAT('%', k.keywords, '%') 
GROUP BY k.keywords 
ORDER BY count(*) DESC 

Results

| keywords | Amount | 
|-----------|--------| 
|  at |  34 | 
|  Donec |  11 | 
|  quis |  10 | 
|  amet |  9 | 
| vulputate |  5 | 
| ornare |  4 | 
|  eros |  2 |