1.自动编号 id int(3) auto_increment not null primary key  删除一行后,编号不会自动改变,能不能编号随着记录的增减而增减
  删除编号为4的字段后,重新显示所有记录,结果编号中没有4了,直接到5
  请问如何解决??2。怎么把第4个字段改为第1个字段?(就是让字段调换一下位置)3。假如有 A1,A2,A3 三个表,这三个表中必定有一个人叫“张三”  请问如何通过JOIN查询查出这个叫"张三”的人?4。假如 A1有记录(aa,bb) A2有记录(cc,dd)
   select * from a1 join a2
     结果为:aa  cc
             bb  cc
             aa  dd
             bb  dd
   select * from a2 join a1
     结果为:cc  aa
             cc  bb
             dd  aa
             dd  bb
    第二种查询我个人认为结果为:             cc  aa
             dd  aa
             cc  bb
             dd  bb
    请问第二种查询为何和第一种的查询结果理论上是不一样的呢?5。假如A1有字段(name,sex,age) A2有字段(name,address,email)
   select * from a1 join a2
   请问怎么可以让产生的结果不要显示a2的NAME字段???本人为超级菜鸟,希望不要手下留情!!!!!!!!多谢多谢!!!!

解决方案 »

  1.   

    1、不可以。不过有另外的办法。
    导出数据到临时表:(假定你的字段1是自增字段)create temporary table tmp select 字段2,字段3,...,字段N from 你的表名;
    truncate table 你的表名;
    insert into 你的表名(字段2,字段3,...,字段N) select * from tmp;
      

  2.   

    100分..
    1.MySQL不会帮你做这个事情,其它dbms也是.
    如果你想要这样做,那可以先将这个表的所有内容insert到一个临时表中,然后对这个表truncate table tb_name清空,再把刚临时表插入回来.
    2.使用alter table修改看看行不行.
    3.这三个表要存在主外键约束.然后join的时候.on 表1.列=表2.表就可以.
    4.是不是跟编码有关.不清楚.请yueliangdao0608同志更正吧.
    5.
    select a.*,address,email from a1 join a2我也是菜鸟.
    说错的.请yueliangdao0608同志后面更正.
      

  3.   

    2、
    假设你的表名为A
    字段1,字段2 等等为 field1 field2...
    字段的定义为char(20)alter table A modify field4 char(20) first;
    alter table A modify field1 char(2) after fieldN(最后一个字段);
      

  4.   

    3、
    用SELECT语句实现,就是简单的多表连接:
    假设含有张三的字段为field1. select * from A1,A2,A3 where A1.field1 = '张三' or A2.field1 = '张三' or A3.field1 = '张三';
      

  5.   

    4、理论上是一样的。只不过是顺序不同罢了。
    select * from a1 join a2  <==> select * from a1,a2;
    select * from a2 join a1  <==> select * from a2,a1;
      

  6.   

    5。假如A1有字段(name,sex,age) A2有字段(name,address,email) 
       select * from a1 join a2 
       请问怎么可以让产生的结果不要显示a2的NAME字段??? 5、明确指出字段就可以了select a1.`name`,a1,sex,a1,age,a2.address,a2.email from a1,a2;
      

  7.   

    yueliangdao0608回答的太详细了,我没法补充了,以下代码是用来修改列的顺序的,参考alter语法,楼主自己写吧ALTER [IGNORE] TABLE tbl_name
      | CHANGE [COLUMN] old_col_name column_definition
            [FIRST|AFTER col_name]
      | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
      

  8.   

    对于第四个问题:
    如果你想要结果显示相同的话,可以指定具体字段,举个例子给你:/*DDL Information For - test.a1*/
    ---------------------------------Table   Create Table                          
    ------  --------------------------------------
    a1      CREATE TABLE `a1` (                   
              `str1` char(2) DEFAULT NULL         
            ) ENGINE=MEMORY DEFAULT CHARSET=utf8  
    /*DDL Information For - test.a2*/
    ---------------------------------Table   Create Table                          
    ------  --------------------------------------
    a2      CREATE TABLE `a2` (                   
              `str1` char(2) DEFAULT NULL         
            ) ENGINE=MEMORY DEFAULT CHARSET=utf8  select * from a1;
    query result(2 records)
    str1 
    aa 
    bb select * from a2;
    query result(2 records)
    str1 
    cc 
    dd select a1.str1,a2.str1 from a1,a2 order by a1.str1;
    query result(4 records)
    str1 str1 
    aa cc 
    aa dd 
    bb cc 
    bb dd select a1.str1,a2.str1 from a2,a1 order by a1.str1;
    query result(4 records)
    str1 str1 
    aa cc 
    aa dd 
    bb cc 
    bb dd 
    这样结果就一样了。