新手菜鸟问题(较多)

pwxt_2325 2007-10-17 05:59:53
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字段???

本人为超级菜鸟,希望不要手下留情!!!!!!!!多谢多谢!!!!

...全文
118 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
toddzst 2007-10-25
  • 打赏
  • 举报
回复
JFJF
swafboxh 2007-10-25
  • 打赏
  • 举报
回复
sf
xiaojing7 2007-10-19
  • 打赏
  • 举报
回复
jf
benbenya 2007-10-18
  • 打赏
  • 举报
回复
同意LS。
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
那就结贴吧。
pwxt_2325 2007-10-17
  • 打赏
  • 举报
回复
真的非常感谢,我几天都没睡好,都是想这个事,再次谢谢各位
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
对于第四个问题:
如果你想要结果显示相同的话,可以指定具体字段,举个例子给你:



/*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
这样结果就一样了。

yifuzhiming 2007-10-17
  • 打赏
  • 举报
回复
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]
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
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;
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
4、理论上是一样的。只不过是顺序不同罢了。
select * from a1 join a2 <==> select * from a1,a2;
select * from a2 join a1 <==> select * from a2,a1;
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
3、
用SELECT语句实现,就是简单的多表连接:
假设含有张三的字段为field1.

select * from A1,A2,A3 where A1.field1 = '张三' or A2.field1 = '张三' or A3.field1 = '张三';
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
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(最后一个字段);
liangCK 2007-10-17
  • 打赏
  • 举报
回复
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同志后面更正.
懒得去死 2007-10-17
  • 打赏
  • 举报
回复
1、不可以。不过有另外的办法。
导出数据到临时表:(假定你的字段1是自增字段)

create temporary table tmp select 字段2,字段3,...,字段N from 你的表名;
truncate table 你的表名;
insert into 你的表名(字段2,字段3,...,字段N) select * from tmp;

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧