错误代码:1052。列' datetime'在where子句中含糊不清

时间:2014-09-08 09:39:05

标签: mysql

我有15个具有相同列名的表,并希望在日期时间条件下检索数据,但很难找到如何执行此操作。

select * FROM AlbertstreetIN1,
AlbertstreetIN2,
AlbertstreetOUT1,
AshtonRPIN1,
AshtonRPIN2
WHERE datetime BETWEEN "2014-08-31 00:00:00" AND "2014-08-31 23:59:59";

所有表名的数据时间都不明确 - 错误。

表格格式 - id,camera_id,name,plate,datetime,nationlilty,image_name,image。

3 个答案:

答案 0 :(得分:0)

如果列不明确,则表示查询中有多个表具有该名称的列。

所以你必须通过添加表名告诉DB你的意思。

WHERE AlbertstreetIN1.datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'

不知道你想要哪张桌子。我只选了一个。

您没有指定如何加入表格。它们必须以某种方式链接,您需要在查询中指定它。

否则你需要union他们这样

select * FROM AlbertstreetIN1 WHERE datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'
UNION ALL
select * FROM AlbertstreetIN2 WHERE datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'
UNION ALL
select * FROM AlbertstreetOUT1 WHERE datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'
UNION ALL
select * FROM AshtonRPIN1 WHERE datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'
UNION ALL
select * FROM AshtonRPIN2WHERE datetime BETWEEN '2014-08-31 00:00:00' 
                                   AND '2014-08-31 23:59:59'

答案 1 :(得分:-1)

在where condition中使用表名或别名。由于datetime存在于多个表中,因此您无法在没有表名或别名的WHERE条件中使用它。

喜欢AlbertstreetIN1.datetime

答案 2 :(得分:-2)

你能这样试试吗?

datetime是MYSQL中的关键字/预定义

之一
WHERE datetime BETWEEN "2014-08-31 00:00:00" AND "2014-08-31 23:59:59";

WHERE `datetime` BETWEEN "2014-08-31 00:00:00" AND "2014-08-31 23:59:59";

或像这样的东西

WHERE (AlbertstreetIN1.datetime BETWEEN "2014-08-31 00:00:00" AND "2014-08-31 23:59:59") || (AlbertstreetIN2.datetime BETWEEN "2014-08-31 00:00:00" AND "2014-08-31 23:59:59");