ada*_*eks 13 mysql select subquery
好的,这里需要一个MySQL大师.我正在尝试编写一个查询,当有人对您之前评论过的项目发表评论时,该查询将作为通知系统.'drinkComment'表非常简单:
commentID, userID, drinkID, datetime, comment
Run Code Online (Sandbox Code Playgroud)
我写了一个查询,它将获得我之前评论过的所有关于饮料的评论(这不是我的评论),但它仍会显示我评论之前发生的评论.这与我认为可行的一样接近,但事实并非如此.请帮忙!
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
Run Code Online (Sandbox Code Playgroud)
DRa*_*app 12
为什么不与用户的prequery和所有他们所提供的意见饮料开始,作为什么时间(不知道你是否有每人多条评论,对于任何给定的饮料或没有).然后,在您的日期/时间评论之后找到所有其他人的评论......
这个查询实际上应该更快,因为它只是以一个用户的饮料评论作为基础开始,然后回到评论表中那些与饮料ID和截止时间相匹配的人.
SELECT STRAIGHT_JOIN
dc.*
from
( select
drinkID,
max( datetime ) UserID_DrinkCommentTime
FROM
drinkComments
WHERE
userID = 1
group by
drinkID ) PreQuery
join DrinkComments dc
on PreQuery.DrinkID = dc.DrinkID
and dc.datetime > PreQuery.UserID_DrinkCommentTime
order by
dc.DateTime desc
Run Code Online (Sandbox Code Playgroud)