Mysql 一个字段不等于另一个字段时带条件的SQL查询

Mysql 一个字段不等于另一个字段时带条件的SQL查询,mysql,sql,Mysql,Sql,假设我们有字段:id | content | updateTime | creationTime 插入完成后,updateTime和creationTime都将用当前时间填充。仅更新时更新时间字段将被更改。当我需要查找“2012-06-28”上创建的所有数据时,我只需使用: SELECT id, content FROM tbl WHERE creationTime LIKE '2012-06-28%'` 但要获取所有更新的数据(不包括已创建的数据),我需要使用以下内容: SELECT id,

假设我们有字段:id | content | updateTime | creationTime

插入完成后,updateTime和creationTime都将用当前时间填充。仅更新时更新时间字段将被更改。当我需要查找“2012-06-28”上创建的所有数据时,我只需使用:

SELECT id, content FROM tbl WHERE creationTime LIKE '2012-06-28%'`
但要获取所有更新的数据(不包括已创建的数据),我需要使用以下内容:

SELECT id, content FROM tbl WHERE creationTime LIKE '2012-06-28%' AND creationTime != updateTime
这显然行不通。虽然我可以通过在php中比较两个“time”collumns的值来找到所有更新的数据,但我仍然喜欢在查询中这样做

UPD:事实证明,我完全不知道sql不仅允许将字段的值和给定变量number进行比较。。。但它也可以比较一个字段和另一个字段的值

代替
=(与某些DMB不兼容)

所以

选择id、内容
来自tbl
其中creationTime如“2012-06-28%”和creationTime updateTime
如果你想要一些文档


但是,您的查询必须与
一起正常工作=

仅从
更改not运算符=

从tbl中选择id、内容,其中creationTime如“2012-06-28%”和creationTime updateTime

您的查询是正确的(在mySQL上),不知道您为什么会有其他想法


是不等于的SQL运算符。但是,它的一些实现(例如PostgreSQL或MySQL)接受
=也是。如果在不同的数据库上使用代码,最好始终使用
,以避免出现问题。

是在28日创建并在28日编辑的,但不是在创建的同时编辑的吗?在有更新之前保持updateTime为空不是更好吗?你为什么说“这显然不能工作”?我认为应该这样做,尽管我同意@marabutt的观点,即使用
updateTime=NULL
可能在语义上更为正确。(顺便说一句,要匹配日期,您会发现
date(creationTime)='2012-06-28'
比您的字符串模式匹配方法更有效)。@marabut-每行只插入一次,更新可以多次。所以我只使用
updateTime
timestamp NOT NULL默认的当前时间戳-这样
updateTime
就可以由数据库本身自动更新。我只需要记住在创建记录时插入日期。@eggyal-你说得对。帖子更新。@Hallucynogenyc:看看他使用的标签,我自己从来没有使用过mySQL,只有PostgreSQL,你怎么知道的?:)您链接到的文档建议
=是有效的不等式运算符。为什么你提议的改变会有什么不同?@eggyal他们是一样的,但是
=
仅受某些DMB支持,因此,如果您必须以不同的“语言”来“导出”该查询,你必须修改it@eggyal这只是一个建议,MySQL不支持不等式运算符的两种形式吗?MySQL不支持不等式运算符的两种形式吗?SQL规范和当前存在的实现之间存在差异。MySQL可能支持规范中没有的东西,但在其他SQL Compilent数据库上不起作用。同意,但考虑到这个问题被标记,这如何回答OP的问题?
SELECT id, content 
FROM tbl 
WHERE creationTime LIKE '2012-06-28%' AND creationTime <> updateTime
SELECT id, content FROM tbl WHERE creationTime LIKE '2012-06-28%' AND creationTime <> updateTime