你的应该等同于
select * from sjgxx where jgm ='1'

解决方案 »

  1.   

    就是將 table sjgxx 
    看做是兩個獨立的表 sigxx0 ,sigxx1
    來操作
      

  2.   

    sjgxx0:代表第一个sjgxx;
    sjgxx1:代表第二个sjgxx;
    上面SQL是将jgm='1'的记录取出来,一行中将一条记录写两遍。
      

  3.   

    这条语句就等于有两个结构和数据记录完全一样的sjgxx表,名字分别叫做sjgxx0和sjgxx1,然后从这两个表中取出记录数据。
      

  4.   

    故弄玄虚,等价于下面操作
    select sjgxx.* ,sjgxx.* from sjgxx where sjgxx.jgm ='1'
      

  5.   

    两个记录集想乘,在加上筛选条件。
    如果有如下数据
    jgm  field
    1      4
    2      6那select * from sjgxx sjgxx0,sjgxx sjgxx1 的结果为sjgxx0.jgm  sjgxx0.field  sjgxx1.jgm  sjgxx1.field
    1                 4            1          4
    1                 4            2          6
    2                 6            1          4  
    2                 6            2          6加上条件后
    select * from sjgxx sjgxx0,sjgxx sjgxx1 where sjgxx0.jgm ='1' and sjgxx1.jgm = '1'
    结果为:
    sjgxx0.jgm  sjgxx0.field  sjgxx1.jgm  sjgxx1.field
    1                 4            1          4
      

  6.   

    楼上的想法挺好,不过有点缺陷,select * from sjgxx sjgxx0,sjgxx sjgxx1 的结果不是两个记录集相乘,记录集相乘应该是select sjgxx.* ,sjgxx.* from sjgxx
      

  7.   

    to s_z_s_fs() :是相乘。
    我的说法是有些问题这句话的意思是把sjgxx.jgm ='1' 的记录自乘。如果不是一条记录,我那样就不对了。也就是说如果sjgxx.jgm ='1' 如果有三条记录,这个结果集就有九条记录。
    等价于
    select sjgxx0.* ,sjgxx1.* from sjgxx sjgxx0,sjgxx sjgxx1 where sjgxx0.jgm ='1' and sjgxx1.jgm = '1'