我试图在进行查询时在 WHERE 子句中应用过滤器。我确定列中有数据,但由于某种原因,Mysql 检索到的表不完整。我将结果导出到 csv 文件以查看数据是否存在,确实存在,但这不是我所期望的。我想知道为什么 Mysql 会这样检索结果,以及我的查询是否有问题。
起初,这是我用来创建临时表的查询。
SELECT a.n_tile, a.member_casual, COUNT(ride_length) AS cnt
FROM
(
SELECT NTILE(12) OVER (ORDER BY ride_length) AS n_tile, member_casual, rideable_type, ride_length
FROM length
)a
GROUP BY 1,2;
这是我得到的桌子
n_tile | member_casual | 计数 |
---|---|---|
133903 | ||
338394 | ||
123895 | ||
348402 |
所以当我查询过滤我的数据时,我得到一个空集。
WITH h AS
(
SELECT a.n_tile, a.member_casual, COUNT(ride_length) AS cnt
FROM
(
SELECT NTILE(12) OVER (ORDER BY ride_length) AS n_tile, member_casual, rideable_type, ride_length
FROM length
)a
GROUP BY 1,2
)
SELECT cnt
FROM h
WHERE h.n_tile=1 AND h.member_casual = 'member';
当我将结果导出到 csv 文件以尝试了解数据是否确实存在时,确实如此。但是,格式如下:
n_tile,member_casual,count_rides
然而,当我如下所示格式化我的数据,并将其作为表导入 Mysql 时,我能够使用 WHERE 子句过滤我的数据。
n_tile,member_casual,count_rides
n_tile | member_casual | 计数 |
---|---|---|
1 | 休闲 | 133903 |
1 | 会员 | 338394 |
2 | 休闲 | 123895 |
2 | 会员 | 348402 |
现在我的表是这样的,下面的查询按预期工作
WITH h AS
(
SELECT a.n_tile, a.member_casual, COUNT(ride_length) AS cnt
FROM
(
SELECT NTILE(12) OVER (ORDER BY ride_length) AS n_tile, member_casual, rideable_type, ride_length
FROM length
)a
GROUP BY 1,2
)
SELECT cnt
FROM h
WHERE h.n_tile=1 AND h.member_casual = 'member';
但是,我不明白为什么 Mysql 向我显示不完整的表。我的查询有什么问题吗?