2010-09-09 105 views
0

我需要一个计数和搜索查询才能正常工作。计数查询似乎正常工作,但搜索查询不是。sql搜索查询仍然没有产生预期的结果

统计查询:

SELECT COUNT(DISTINCT tg_id) 
    FROM tg_keywords 
WHERE tg_keyword LIKE 'keyword_1' OR tg_keyword LIKE 'keyword_2' 
ORDER BY tg_keyword LIKE 'keyword_1' AND tg_keyword LIKE 'keyword_2 DESC 
Returns 1 count as expected. 

搜索查询:

SELECT DISTINCT tg_keywords.tg_id 
    FROM tg_keywords LEFT JOIN tg_info.tg_id=tg_keywords.tg_id 
WHERE tg_keyword LIKE 'keyword_1' OR tg_keyword LIKE 'keyword_2' 
ORDER BY tg_keyword LIKE 'keyword_1' AND tg_keyword LIKE 'keyword_2' DESC, tg_info.date_added LIMIT 16 OFFSET 1 
Returns 0 results (1 is expected) 

任何意见,将不胜感激提前

感谢, 阿奇

+1

你是什么意思“不能正常工作”? – RedFilter 2010-09-09 14:40:27

+0

第一个查询根据需要从数据库中产生1个结果,但第二个查询返回0个结果。我希望第一个查询可以计算没有限制的结果数量,但第二个查询返回具有限制的唯一tg_id字段。 – archiebald 2010-09-09 14:44:33

回答

2

在次取出OFFSET 1查询结束,然后尝试。

OFFSET 1告诉它给你第二行的记录。要么让它OFFSET 0或完全删除它。

+0

完美的工作,认为OFFSET总是从1开始。谢谢你。 – archiebald 2010-09-09 15:10:37

+0

不客气。 – shamittomar 2010-09-09 15:11:38

0
SELECT DISTINCT tg_keywords.tg_id 
FROM tg_keywords 
LEFT JOIN tg_info.tg_id=tg_keywords.tg_id 
WHERE tg_keyword LIKE 'keyword_1' OR tg_keyword LIKE 'keyword_2' 
ORDER BY tg_keyword LIKE 'keyword_1' AND tg_keyword LIKE 'keyword_2' DESC, tg_info.date_added 
LIMIT 16 OFFSET 1 

那个ORDER BY部分是什么?您的意思是:

WHERE tg_keyword LIKE 'keyword_1' OR tg_keyword LIKE 'keyword_2' 
ORDER BY tg_info.date_added DESC 
+0

不,我想要匹配所有关键字的结果先返回。这就是为什么标准与上面相同,但AND运算符位于关键字之间而不是上面的OR。 – archiebald 2010-09-09 14:49:04

0

您是否还想让用户使用SQL通配符?如果不是,我可能会喜欢并放入一个=。