我有一个具有visitstartime
和visitendtime
列的代理机构表(即使说是日期字段,这些字段也是varchar(50)
。没有NULLS
)我想了解代理商是否从未访问过。
如果我这样做:
SELECT * FROM AGENCY WHERE visitstartime = ' ' and visitendtime = ' '
它仅返回空白的RECORDS,但是同一家代理商可以进行“访问”并填充字段。我怎么能看到完全没有访问的代理商。
答案 0 :(得分:0)
像表这样的声音应该称为“访问”而不是“代理”,但是我想您已经注意到了一些设计问题(例如数据类型)。无论如何,对于您的问题,您可以使用类似的东西:
SELECT *
FROM AGENCY as ag
WHERE NOT EXISTS (SELECT NULL
FROM AGENCY as ag2
WHERE ag2.Agencyid = ag.Agencyid
AND ag2.visitstartime <> ''
AND ag2.visitendtime <> ''
)
答案 1 :(得分:0)
您可以使用聚合:
SELECT AgencyId
FROM AGENCY
GROUP BY AgencyId
HAVING MAX(visitstartime) = ' ' AND
MAX(visitendtime) = ' ';
您似乎将日期/时间值存储为字符串。我强烈建议您更改数据结构以使用适当的本机日期/时间类型。