2013-11-01 51 views
0

我有一个全文查询,这样它得到结果我期望追加查询到MySQL全文查询

SELECT id,'', 'blogs' as mytable,title, content, 
    MATCH(title) AGAINST('keywords*' IN BOOLEAN MODE) * 8 + 
    MATCH(content) AGAINST('keywords*' IN BOOLEAN MODE) * 4 
     as score FROM blogs WHERE archived = 'N' AND MATCH(title, content) 
      AGAINST('keywords*' IN BOOLEAN MODE) 
      ORDER BY score DESC, id DESC 

如果我搜索一个特定的关键字,我得到一个结果,我欲与君4.问题的ID我需要一个额外的列,所以我可以搜索该ID以获取该ID的行位置。

如果我在它自己运行此查询我得到正确的结果是8

SELECT position FROM 
(
    SELECT 
    id, @rownum:[email protected]+1 position, archived 
    FROM blogs, (SELECT @rownum:=0) r WHERE archived ='N' 
    ORDER BY id DESC 
) 
AS position 
WHERE id = 4 

我想要做的就是这些查询,以第一次查询的ID被传递到合并成一个查询第二个查询的WHERE所以我所谓的“位置”附加列将有8

值我试图查询相结合,但它绝对不是正确的

回答

2

像这样的事情?

SELECT position FROM 
(
    SELECT 
    id, @rownum:[email protected]+1 position, archived 
    FROM blogs, (SELECT @rownum:=0) r WHERE archived ='N' 
    ORDER BY id DESC 
) 
AS position 
WHERE id IN (SELECT id FROM(SELECT id,'', 'blogs' as mytable,title, content, 
    MATCH(title) AGAINST('keywords*' IN BOOLEAN MODE) * 8 + 
    MATCH(content) AGAINST('keywords*' IN BOOLEAN MODE) * 4 
     as score FROM blogs WHERE archived = 'N' AND MATCH(title, content) 
      AGAINST('keywords*' IN BOOLEAN MODE) 
      ORDER BY score DESC, id DESC)x) 
+0

谢谢。在发布问题后,我找到了一种方法,但我遇到了另一个问题,所以你的方式可能会更好。我如何在我的第一个查询ID,'','blogs'中获得这些字段,如mytable,title,content – AdRock