首页 > 解决方案 > 如何通过比较 SQL 查询中的两个项目名称及其日期来选择数据

问题描述

因此,只有当日期比具有相同用户 ID 的“不喜欢”的项目更近时,我才试图从表中获取“喜欢”的项目。有时它可能只是一个“喜欢”,然后也应该始终选择它。

到目前为止,这是我所拥有的:

$query = "
SELECT * 
  FROM useractions 
 WHERE userid = '$userID' 
   AND (action= 'Like' OR action='Dislike')
 ";

我从同一个用户 ID 那里得到了所有喜欢/不喜欢的东西。现在我只需要将它与“日期”进行比较,以查看“喜欢”是否是比“不喜欢”更近的日期,如果是,请选择它并查看喜欢/不喜欢的对象是否在同一个对象上工作。

所以我写的东西(显然没有工作)是AND我查询的补充。

AND (action='Like' date > action='Dislike' date)" 

(日期是我表中另一个带有日期的项目)。

这当然行不通。我需要如何调整它以使其成为有效的 SQL 查询?

标签: mysqlsql

解决方案


您可以在两个子查询之间使用连接

    select t1.* from  
    (
    select * 
    FROM useractions 
    WHERE userid = '$userID'   
    AND action= 'Like' 
    ) t1 
    inner join  (
    select * 
    FROM useractions 
    WHERE userid = '$userID'   
    AND action='Dislike'
    ) t2 ON t1.userid = t2.userid and t1.date > t2.date 
    where t1.userid = '$userID' 

无论如何,您不应该在 sql 中使用 php var .. 看看您的 php mysql 驱动程序以获取准备好的语句和绑定参数


推荐阅读