mysql - 在 1 个查询中组合 2 个逻辑 SQL 语句
问题描述
我的问题是:如何将 2 个逻辑语句组合成 1 个 SQL 查询。它们都必须单独为真,但在一个陈述中为真的东西不一定在另一个陈述中为真,例如 meta_value 更大应该只在我要求开始课程时才为真,反之亦然。
这是我到目前为止所尝试的:
SELECT DISTINCT course_id FROM `wp_database`
WHERE (meta_key = 'begin' AND meta_value > 1604185200)
AND (meta_key = 'end' AND meta_value < 1619372800)
这是我的数据库结构:
meta_id | course_id | meta_key | meta_value
-------------------------------------------
1 | 1 | name | Test1
2 | 1 | begin | 1604230000
3 | 1 | end | 1604270000
4 | 2 | name | Test2
5 | 2 | begin | 1623372800
6 | 2 | end | 1623385800
目前我没有收到任何输出。
解决方案
我认为您想要聚合having
并将多行组合成结果集的单行:
SELECT course_id
FROM `wp_database`
GROUP BY course_id
HAVING MAX(meta_key = 'begin' AND meta_value > 1604185200) > 0 AND
MAX(meta_key = 'end' AND meta_value < 1619372800) > 0;
该HAVING
子句正在检查组中的某些行是否存在条件。
推荐阅读
- javascript - 访问导航方法 React-Big-Calendar 和 Typescript
- python - 如何使用相同的测试数据测试 .tflite 模型以证明其行为与原始模型相同?
- python - 在 pandas 列/索引上应用 NLTK 词干提取
- r - 不能做假期矢量图
- google-sheets - 谷歌表格查询多条件持续时间总和
- r - R循环,错误:“需要TRUE / FALSE的缺失值”
- java - ubuntu 18 上的 ionic build android 出现错误
- mocking - 如何使用 phpunit 测试 IMAP 操作?
- sql - 表版本控制 - DML 和 DDL 跟踪更改并回滚到以前的版本
- javascript - 如何让外部函数(在 javascript 中)调用 html 中的 ID?