我有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。
答案 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");