为什么我使用 select count(t1.mailid) from t_mailinfo t1,t_userinfo t2得不到正确的值

解决方案 »

  1.   

    有空值?
    SQL> create table t(x int,y varchar2(17));表已创建。SQL> insert into t values(1,'dfd');已创建 1 行。SQL> insert into t values(1,null);已创建 1 行。SQL> select count(y) from t;  COUNT(Y)
    ----------
             1SQL> select count(*) from t;  COUNT(*)
    ----------
             2
      

  2.   

    我本来就是想:
    select count(a) from t_mailinfo;
    select count(b) from t_userinfo;
    放到一个sql里面
    select count(t1.a),count(t2.b) from t_mailinfo t1,t_userinfo t2;
    但是得出的结果却不是我想要的,那有什么方法可以在一条sql里面得出正确的结果吗?
      

  3.   

    select (select count(a) from t_mailinfo) a, (select count(b) from t_userinfo) b from dual; 
      

  4.   

    如果你想把两个值都列出来就用下面的方法:
    select count(a) from t_mailinfo; 
    union
    select count(b) from t_userinfo; 
    如果你想把两个值都列出来并且竖转横下就用下面的方法:
    select (select count(a) from t_mailinfo) a, (select count(b) from t_userinfo) b from dual; 
    如果你想知道这两个表关联后的结果:
    select count(t1.a),count(t2.b) from t_mailinfo t1,t_userinfo t2 where t1.字段名=t2.字段名 ;--要搞清楚这两个表的关系
     
      

  5.   

    直接用Union就行了吧,如果是连接的话应该加上条件啊,这样得出的结果具有笛卡尔积,不知道有什么意义哈
      

  6.   

    应该有个关联条件吧。eg:
    select count(t1.mailid) from t_mailinfo t1,t_userinfo t2 where t1.id=t2.id