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)