SELECT COUNT(*) AS cnt FROM ( (SELECT 'used' FROM b_names_1) UNION ALL
(SELECT 'used' FROM b_names_2)) AS t
WHERE 'used' = 1
这段代码非常好......
但是我想用时间间隔对结果进行排序,所以当我尝试在底部添加这些行时,它不起作用:
AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' ) AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )
这段代码看起来像这样:
SELECT COUNT(*) AS cnt FROM ( (SELECT 'used' FROM b_names_1) UNION ALL
(SELECT 'used' FROM b_names_2)) AS t
WHERE 'used' = 1 AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' ) AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )
它给了我以下错误:#1054 - 'where子句'中的未知列'registration_date_time'
任何想法如何正确地将该日期代码实现到SQL?
答案 0 :(得分:1)
这些列必须在某处 FROM ,将它们添加到内部查询中:
SELECT COUNT(*) AS cnt
FROM (
(SELECT 'used', registration_date_time FROM b_names_1)
UNION ALL
(SELECT 'used', registration_date_time FROM b_names_2)
) AS t
WHERE 'used' = 1
AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' )
AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )