MySQL查询内部查询

大石

我对MySQL还是很陌生,所以对于有经验的人来说这可能是一个简单的问题,但是我无法弄清楚。我需要从用户发表评论的数据库中获取项目,并且其他人有更新的评论。

我的桌子上有这些柱子

app_id - id of the item

app_comment - comment blank if rate is present

app_rate - rating blank if comment is present

date - date of posting

device_id - unique id to identify each user.

我编写了简单的查询来获取用户(device_id)发布的每个评论。

temp table:
SELECT `app_id` FROM `appaction` WHERE `device_id` = '00000000-5a24-5a06-0000-00005c907706' AND `app_comment` <> ''

但是无法弄清楚下一步该怎么做。现在我以某种方式只需要从主表中获得那些其他人(不同的device_id)在每个项目上都有较新帖子的app_id

更新:数据示例:http : //www.sqlfiddle.com/#!2/ 8d986/1

注意:这只是示例,用于了解表格的外观。实际上,它内部有大约10000个值。

例如:我将device_id分发给php脚本,在输出中,我希望所有app_id都位于用户已张贴自己并在他之后有新注释的位置。

输入示例: http : //www.sqlfiddle.com/#!2/66258/1

所需的输出用于输入ffffffff-c565-9b4a-ffff-ffffc9d821fd

img /本田/AccordPICS/4167946157_a5b77093bc_b.jpg

因为其他人为此app_id发布了新帖子。

吉姆

如果我正确理解,则app_id是指向另一个表的链接,而不是appaction的ID。在这种情况下,您可以执行以下操作:

SELECT ua.id AS user_item_id, oa.id AS other_item_id FROM appaction ua
INNER JOIN appaction oa ON (ua.app_id = oa.app_id AND oa.app_comment <> '' AND oa.date > ua.date)
WHERE 
    ua.device_id = '00000000-5a24-5a06-0000-00005c907706' 
    AND oa.device_id != '00000000-5a24-5a06-0000-00005c907706' 
    AND ua.app_comment <> ''

这将获取设备的项目,该设备的项目在项目之后张贴了与同一app_id相同的项目。other_item_id是后续操作的ID。

编辑:要获取输出,您只需将以上查询更改为:

SELECT DISTINCT(ua.app_id) FROM appaction ua
INNER JOIN appaction oa ON (ua.app_id = oa.app_id AND oa.app_comment <> '' AND oa.date > ua.date)
WHERE 
    ua.device_id = 'ffffffff-c565-9b4a-ffff-ffffc9d821fd' 
    AND ua.app_comment <> ''

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章