好的,这里需要一个MySQL专家。我正在尝试编写一个查询,作为通知系统,以便有人对您之前评论过的项目发表评论。该“drinkComment”表是非常简单的:主查询数据变量的MySQL子查询
commentID, userID, drinkID, datetime, comment
我写了一个查询,将得到所有的意见,对我以前评论过的饮料(即不是我的),但它仍然会显示评论发生在我的评论之前。这与我认为会工作的一样接近,但事实并非如此。请帮忙!
select @drinkID:=drinkComments.drinkID, commentID, drinkID, userID, comment, datetime
FROM drinkComments
WHERE `drinkID` IN
(select distinct drinkID from drinkComments where drinkComments.userID = 1)
AND drinkComments.dateTime > (
/*This gets the last date user commented on the main query's drinkID*/
select datetime FROM drinkComments WHERE drinkComments.userID = 1 AND drinkComments.drinkID = @drinkID ORDER BY datetime DESC LIMIT 1
)
ORDER BY datetime DESC
非常好的解决方案!工作并确实执行得更快!谢谢! – adamweeks 2011-05-19 18:49:05
@AdamWeeks,我们试图在帮助他人时提供高效的解决方案...您可以随时更改“已检查”的答案,以帮助未来的人们获得比第一个更好的解决方案。 – DRapp 2011-05-20 02:33:06
+1很棒的子查询教程。没有意识到我需要'FROM'部分中的子查询来访问主查询中的结果 – foochow 2013-04-27 21:50:49