mysql 带日期时间的 WHERE IN 不工作
mysql WHERE IN with datetime not working
目标查询类似于
SELECT
user_id,trk_data_identifier, trk_data_type, trk_date,sum(trk_data_frequency) as sum_data_frequency
FROM user_tracker_data
WHERE user_id = 37557 AND
trk_date IN ('2015-10-02' , '2015-10-04', so on)
BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
复杂查询:
SELECT
user_id,trk_data_identifier, trk_data_type, trk_date,sum(trk_data_frequency) as sum_data_frequency
FROM user_tracker_data
WHERE user_id = 37557 AND
trk_date IN (
SELECT GROUP_CONCAT(CONCAT('\'',trk_dt.trk_date,'\''))
FROM (
SELECT
trk_date
FROM
user_tracker_data
WHERE
user_id = 37557
GROUP BY trk_date
ORDER BY trk_date DESC
LIMIT 15
) trk_dt
)
GROUP BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
我检查了 Mysql GROUP_CONCAT() 并说 This function returns a string result with the concatenated non-NULL values from a group
但我想知道为什么它不起作用,我的子查询不是 returning 字符串我想了。当 运行 子查询时,它执行 return 值,就像这样 '2015-10-30','2015-10-29','2015-10-28','2015-10-27','2015-10-26','2015-07-17','2015-07-15','2015-04-10','0000-00-00'
.
根据结果,它似乎只得到最后一部分 '0000-00-00'
知道哪里出了问题吗?
您不应在子查询中连接:
...
AND trk_date IN (SELECT trk_date
FROM user_tracker_data
WHERE user_id = 37557
GROUP BY trk_date
ORDER BY trk_date DESC
LIMIT 15)
GROUP BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
您可以尝试将查询更改为,
main query
where
DATE(trk_date) IN (subquery)
目标查询类似于
SELECT
user_id,trk_data_identifier, trk_data_type, trk_date,sum(trk_data_frequency) as sum_data_frequency
FROM user_tracker_data
WHERE user_id = 37557 AND
trk_date IN ('2015-10-02' , '2015-10-04', so on)
BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
复杂查询:
SELECT
user_id,trk_data_identifier, trk_data_type, trk_date,sum(trk_data_frequency) as sum_data_frequency
FROM user_tracker_data
WHERE user_id = 37557 AND
trk_date IN (
SELECT GROUP_CONCAT(CONCAT('\'',trk_dt.trk_date,'\''))
FROM (
SELECT
trk_date
FROM
user_tracker_data
WHERE
user_id = 37557
GROUP BY trk_date
ORDER BY trk_date DESC
LIMIT 15
) trk_dt
)
GROUP BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
我检查了 Mysql GROUP_CONCAT() 并说 This function returns a string result with the concatenated non-NULL values from a group
但我想知道为什么它不起作用,我的子查询不是 returning 字符串我想了。当 运行 子查询时,它执行 return 值,就像这样 '2015-10-30','2015-10-29','2015-10-28','2015-10-27','2015-10-26','2015-07-17','2015-07-15','2015-04-10','0000-00-00'
.
根据结果,它似乎只得到最后一部分 '0000-00-00'
知道哪里出了问题吗?
您不应在子查询中连接:
...
AND trk_date IN (SELECT trk_date
FROM user_tracker_data
WHERE user_id = 37557
GROUP BY trk_date
ORDER BY trk_date DESC
LIMIT 15)
GROUP BY trk_data_type, trk_date
ORDER BY sum_data_frequency DESC
您可以尝试将查询更改为,
main query
where
DATE(trk_date) IN (subquery)