SQL非常简单的嵌套查询

时间:2014-08-14 10:07:04

标签: mysql sql

我想创建一个嵌套查询。我有一个名为点击的表,其中有几列,其中包括Datestamp,Keyword,Product_Title。内部查询是

SELECT DISTINCT(k.Keyword) 
FROM clicks k 
WHERE (k.Keyword LIKE '%word1%' AND k.Product_Title LIKE '%word2%');

现在我想查询一堆行,使得关键字是上述查询中返回的关键字之一。我做了以下事情:

SELECT c.Datestamp,c.Keyword,c.Product_Title 
FROM clicks c 
WHERE c.Keyword IN (
    SELECT DISTINCT(k.Keyword) 
    FROM clicks k 
    WHERE (k.Keyword LIKE '%word1%' AND k.Product_Title LIKE '%word2%')
);

这看起来很简单,但它并不起作用。查询只是挂在那里。没有错误信息,没有任何反馈,只是挂在那里。我没有那么多行,大约300k,所以我确定这个问题并不是因为这个表太大了。

建议?

2 个答案:

答案 0 :(得分:1)

你的子查询运行得很快吗?确保您在Keyword字段上有索引,这样可以加快查询速度。也尝试使用JOIN:

SELECT c.Datestamp,c.Keyword,c.Product_Title 
FROM clicks c 
JOIN
  (
    SELECT DISTINCT(k.Keyword) 
      FROM clicks k 
     WHERE (k.Keyword LIKE '%word1%') AND (k.Product_Title LIKE '%word2%')
  )  d on c.Keyword=d.Keyword

有关详细信息,请参阅MySQL Subquery Limitations

答案 1 :(得分:0)

select distinct c.Keyword, c.Datestamp, c.Product_Title FROM clicks c
where c.Keyword   LIKE '%word1%' AND c.Product_Title LIKE '%word2%'