我想创建一个嵌套查询。我有一个名为点击的表,其中有几列,其中包括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,所以我确定这个问题并不是因为这个表太大了。
建议?
答案 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%'