gpt4 book ai didi

具有主查询数据变量的 MySQL 子查询

转载 作者:IT老高 更新时间:2023-10-29 00:12:07 25 4
gpt4 key购买 nike

好的,这里需要一位 MySQL 大师。我正在尝试编写一个查询,当有人对您之前评论过的项目发表评论时,它将用作通知系统。 “drinkComment”表非常简单:

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

最佳答案

为什么不先查询用户和他们提供评论的所有饮料以及截止时间(不知道您是否对每个人对任何给定饮料有多个评论)。然后,在你的日期/时间评论之后找到所有其他人的评论......

这个查询实际上应该更快,因为它仅以一个用户的饮料评论作为基础开始,然后返回到与饮料 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

关于具有主查询数据变量的 MySQL 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com