sql问题,为什么这样能查询出所有数据?

mysql中:
cdh_customer 表
有个字段是这样的:
customerType bigint(20) DEFAULT NULL COMMENT '客户类型,1:月结;2:非月结 ',

select * from cdh_customer where customerType='000001fasdfasfsafs' ;

明明没有符合这个数据的条件为什么能查询出所有数据呢?

另一个表
cc_asyn_request
字段:
status int(2) NOT NULL DEFAULT '0' COMMENT '状态 0.待处理1.已处理2.已导出',

SELECT * FROM cc_asyn_request where status='12323123';

为什么就查询不出所有数据了呢?
同样都是整形字段结果为什么不一样,哪位大神能解释下?

第一个SQL是 customerType 等于'0000000001 or 1=1fasdfasfsafs'?

select * from cdh_customer where customerType='0000000001 or 1=1fasdfasfsafs' ;

你这段sql是不是拼写错了,应是:

select * from cdh_customer where customerType='0000000001’ or 1=1 ;

仔细看or 1=1,它表示true,而or 1=1和customerType='0000000001是不同的条件,只要满足一方,都可以查询出数据。
再看第二条sql:

SELECT * FROM cc_asyn_request where status='12323123';

这条sql没有or 1=1,只有一个条件,因此从数据库查询时也只是去找status='12323123'的数据。

第一条sql,个人猜测啊
select * from cdh_customer where customerType='0000000001 or 1=1fasdfasfsafs' ;
这里面可能会先运算,'0000000001 or 1=1fasdfasfsafs' 0000000001会默认成布尔,or 后面是个运算 得到false

前者为真 ,后者为假 ,用or连接取真的结果 ,
刚好你查出的数据 应该都是类型=1的数据

第二条的如果都行,那我们估计都要重新学习mysql了,
对于上面改题,思路好!