大佬们,我遇到一个很奇怪的 sql 问题,首先我先展示两个建表语句
CREATE TABLE `monitor_message` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`monitor_id` int(11) NOT NULL DEFAULT '0',
`monitor_type` varchar(255) NOT NULL DEFAULT '',
`run_time` datetime NOT NULL,
`type` varchar(255) NOT NULL
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5238 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
CREATE TABLE `monitor_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` varchar(128) NOT NULL DEFAULT '',
`monitor_type` varchar(255) NOT NULL DEFAULT '',
`name` varchar(512) NOT NULL DEFAULT '',
`state` varchar(64) NOT NULL DEFAULT '启用',
`json_config` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=257 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
然后下面那个语句能执行成功
select
id,
monitor_id,
monitor_type
from
monitor_message
where
run_time >= '2023-11-07'
AND run_time < '2023-11-08'
AND monitor_id IN (
SELECT
monitor_id
FROM
monitor_config
WHERE
project_id = '123'
)
order by run_time desc
但是其中的子查询是有问题的,单独执行是失败的,为啥会执行成功呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.