mysql – SQL查询执行 – Windows和Linux上的不同结果

以下是从Hibernate生成的查询(除了我用*替换了字段列表):

select *
from
    resource resource0_,
    resourceOrganization resourceor1_ 
where
    resource0_.active=1 
    and resource0_.published=1 
    and (
        resource0_.resourcePublic=1 
        or resourceor1_.resource_id=resource0_.id 
        and resourceor1_.organization_id=2 
        and (
            resourceor1_.resource_id=resource0_.id 
            and resourceor1_.forever=1 
            or resourceor1_.resource_id=resource0_.id 
            and (
                current_date between resourceor1_.startDate and resourceor1_.endDate
            )
        )
    )

目前我在Windows和Linux数据库中都有200条记录,目前每条记录都有以下情况:
active = 1
发表= 1
resourcePublic = 1

当我在SQL客户端中直接运行时,此SQL查询会在Windows上获取所有匹配的记录,但在Linux上没有.我在Windows和Linux上都有MySQL 5.1.

如果我应用布尔逻辑(true和true以及(true或者其他)),我希望结果是真的.在Windows上确实如此,但在Linux上却是假的!

如果我按以下方式修改查询,它适用于Windows和Linux:

select *
from
    resource resource0_
where
    resource0_.active=1 
    and resource0_.published=1 
    and (
        resource0_.resourcePublic=1 
    )

因此,只有与resourceOrganization相关的条件的存在使得查询在Linux上带来0结果并且我预期因为它是’或’条件的第二部分,其第一部分为真,结果应该是真的.

任何想法为什么这两个操作系统之间的行为差​​异以及为什么显然可以在Linux上工作的原因不一样!

提前致谢!

最佳答案 >检查
case sensitivity and collation sets(
Collation issues)

>检查
table case sensitivity.特别注意,在Windows上,表名不区分大小写,在Linux上它们区分大小写.

>您是否在两个系统上都尝试过一个简单的测试用例?

点赞