mysql - 如何通过比较 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 查询?
解决方案
您可以在两个子查询之间使用连接
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 驱动程序以获取准备好的语句和绑定参数
推荐阅读
- r - ggplot不显示点
- angular - Angular 需要微前端的 polyfills.js 以及带有 main.js 的 vendor.js 来加载元素。并且只加载第一个声明的 main.js
- javascript - 我可以用 p5.js 为一个圆从一个点移动到另一个点设置动画吗
- python - Pandas:通过在行级别应用自定义函数来创建列
- javascript - 填充 Google Charts API,得到“列标题行必须是一个数组”。
- react-testing-library - 如何使用反应测试库修复错误“在 jest.settimeout() 指定的 5000 毫秒内未调用异步回调?
- python - 通过在没有循环的情况下转换其 RGB 将 RGB 值更改为单个值
- regex - 更新 IIS 中的 URL 查询字符串 IIS 中的 URL 重写
- databricks - 仅在计划作业运行时无法推断 Parquet 的架构
- google-chrome-extension - 当 storage.sync 超出配额时如何同步 Chrome 扩展 Storage.local