2015-08-26 35 views
1

如果“内容”字段包含特定短语,则需要获取“标题”字段。有了标题,我可以做实际的查询来获取帖子。使用结果中的值来避免双重MySQL查询

- 伪码 -

$query1 ='SELECT `title` FROM `posts` WHERE `content` CONTAINS 'matchtest' 
ORDER BY `id` ASC, LIMIT 1'; 
$titlefromquery1; 

$query2 = 'SELECT * FROM `posts` WHERE `title` = 'Reply to: ' . $titlefromquery1; 
$repliesfromquery2; 

的答复没有短语幸运匹配“titles”永远是“Reply to: $title”这就是为什么这两个查询都需要它似乎

是否有条件或其他方式避免双重查询?

+2

伪代码:自加入 – Drew

+0

我认为,没有其他办法。但是您可以将系统更改为INT。所以:你有帖子,所以你可以通过parent_id参数分组回复和主电源。你可以用一个查询来分组parent_id和提取 –

回答

1
SELECT * FROM posts 
WHERE title= 
concat_ws('Reply to: ', 
(SELECT title FROM posts WHERE <put_your_condition> ORDER BY id ASC LIMIT 1)) 
1

您可以使用临时变量来实现这一目标:

SELECT @title:=`title` FROM `posts` WHERE `content` CONTAINS 'matchtest' ORDER BY `id` ASC, LIMIT 1; 

SELECT * FROM `posts` WHERE `title` = CONCAT('Reply to: ' , @title);