现在有一张表person 里面有type字段表示不同的类型有0,1,2 三种,另外有creator创建人字段。
第一个语句是查询出类型为0,2所有的数据以及type=1并且creator=1的数据
第二个语句时查询出类型为查询出上面这些数据的数量第一个语句我的写法是:
SELECT * FROM person WHERE TYPE IN (0,2) 
union select * from person where type=1 and creator=1
第二个我不清楚怎么写,因为在select count的时候使用union查询出来的不是一个总数
求大侠解答第二个语句的写法以及有没有第一句更优的写法?拜谢

解决方案 »

  1.   

    SELECT * FROM person WHERE TYPE<>1
    union
    select * from person where type=1 and creator=1
      

  2.   

    回2楼 ,不等于会造成全表扫描性能非常低
    3楼,意思就是第一句是查select * 第二句是查同样条件的select count(*)这么说总能理解了吧
      

  3.   

    第一个语句是查询出类型为0,2所有的数据以及type=1并且creator=1的数据
    SELECT * FROM person WHERE TYPE IN (0,2) or (type=1 and creator=1)第二个语句时查询出类型为查询出上面这些数据的数量
    SELECT count(*) FROM person WHERE TYPE IN (0,2) or (type=1 and creator=1)