SQL语句查询结果作为第二个语句的创建表格的sql语句

sql数据库如何将查询结果中几个字段写入另一个表
sql数据库如何将查询结果中几个字段写入另一个表
insert into B.DBF(字段1,字段2) select 字段1,字段2from& A,DBF where& 条件(新中记录的一些字段,比如日期等)可以批量插入,sql语句如下 ----------------------- insert into table(id,name,sex,age……) select id,name,sex,age…… from table2&t where t.……
发表评论:
TA的最新馆藏[转]&[转]&[转]&求SQL语句:从一个表中取出数据作为条件在另一个表取数据。
[问题点数:100分]
求SQL语句:从一个表中取出数据作为条件在另一个表取数据。
[问题点数:100分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年4月 MS-SQL Server大版内专家分月排行榜第二
2012年5月 MS-SQL Server大版内专家分月排行榜第三
2011年8月 总版技术专家分月排行榜第三
2012年10月 荣获微软MVP称号2011年10月 荣获微软MVP称号
2012年7月 MS-SQL Server大版内专家分月排行榜第三
2012年9月 MS-SQL Server大版内专家分月排行榜第三
2012年7月 MS-SQL Server大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。查看: 3136|回复: 2
sql语句中怎样查询一个表中的两个字段a字段存再在结果中查询B字段
阅读权限30
在线时间 小时
结帖率: (7/14)
sql语句中怎样查询一个表中的两个字段a字段存再在结果中查询B字段
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
阅读权限90
在线时间 小时
签到天数: 6 天结帖率: (8/11)
sele ct * from table1 where name=(sel ect name from table1 where id=3)
不知道你表达的是不是这个意思
阅读权限30
在线时间 小时
结帖率: (7/14)
你这个代码用不了啊
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
Powered by两表联合查询的sql删除语句的写法-Dandelion
No matter what have happened ,life is a gift and what we can do is just enjoy it!
sql删除一张表的写法是经常要用到的,很容易,写法如下:1delete&from&cc_product&where&id=5(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)这样就删除了cc_product表中id=5的产品如果现在要删除最后登录时间为前用户的产品,应该怎么删除了?产品表:cc_product,字段名:productid,userid,productname用户名:cc_user,字段名:userid,username,LastLoginTime按照我的习惯,写了以下代码1delete&from&cc_product p,cc_user u&wheer&u.userid=p.userid&andLastLoginTime &&''(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)把这句拿到数据库中运行一下,sql语句运行出错。仔细分析了一下,也应该是出错。原因是,这句要删除cc_product表中的记录还是cc_user表中的记录呢?所以出错是正常的。功能:多表联合查询的delete语句的写法开发:wangsdong来源:原创文章,转载请保留此信息我找了一下,结果原来很简单,代码如下:delete&p&from&cc_product p,cc_user u&where&u.userid=p.userid&andLastLoginTime &&''(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)这样就行了,只在delete后面加了一个p,也就是cc_product表,告诉这句话,要删除cc_product表。这里是两表联合查询,三表,四表都是一样的。mysql多表关联删除 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:  1 delete from t1 where 条件  2 delete t1 from t1 where 条件  3 delete t1 from t1,t2 where 条件  4 delete t1,t2 from t1,t2 where 条件  前 3者是可行的,第4者不可行。  也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。  1、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉1 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id  2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉1 DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL  3、 从两个表中找出相同记录的数据并把两个表中的数据都删除掉1 DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25  注意此处的delete t1,t2 from 中的t1,t2不能是别名  如:1 delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25  在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)  上述语句改 写成1 delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25  在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)delete category,news from category left join news on category.id = news.category_idSQL总结(二)连表查询 - 停留的风 - 博客园
posts - 232, comments - 1199, trackbacks - 5, articles - 27
---恢复内容开始---
SQL总结(二)连表查询
连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。
只有真正了解它们之间的区别,才能正确使用。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION&运算符通过组合其他两个结果表(例如&TABLE1&和&TABLE2)并消去表中任何重复行而派生出一个结果表。
当&ALL&随&UNION&一起使用时(即&UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自&TABLE1&就是来自&TABLE2。
注意:使用UNION时,两张表查询的结果有相同数量的列、列类型相似。
学生表信息(Students):
教师表信息(Teachers):
预置脚本:
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(101,'Tom',20,'BeiJing',10)
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(102,'Lucy',18,'ShangHai',11)
INSERT INTO Teachers(ID,Name) VALUES(101,'Mrs Lee')
INSERT INTO Teachers(ID,Name) VALUES(102,'Lucy')
1)基本UNION查询,查询学校教师、学生的总的信息表,包括ID和姓名
SELECT ID,Name FROM Students
SELECT ID,Name FROM Teachers
查询结果:
2)带条件的UNION查询,也可以查询同一张表,查询年龄为18,23岁的学生信息
SELECT ID,Name FROM Student WHERE Age=18
SELECT ID,Name FROM Student WHERE Age=23
当然,这可以使用IN或者OR很容易实现,这里只是点到,以后遇到复杂查询,相信你会用到。
3)查询教师学生全部姓名
&因为UNION只会选择不同的值,如果学生中和教师中有重名的情况,这就需要UNION ALL
SELECT Name FROM Students
SELECT Name FROM Teachers
查询结果:
2、INNER JOIN(内连接)
INNER JOIN(内连接),也成为自然连接
作用:根据两个或多个表中的列之间的关系,从这些表中查询数据。
注意:&内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
语法:(INNER可省略)
SELECT fieldlist
FROM table1 [INNER] join table2
ON table1.column=table2.column
学生表信息(Students):
专业信息表(Majors):&
&预置脚本:
DELETE FROM Students
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(101,'Tom',20,'BeiJing',10)
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(102,'Lucy',18,'ShangHai',11)
DELETE FROM Majors
INSERT INTO Majors(ID,Name) VALUES(10,'English')
INSERT INTO Majors(ID,Name) VALUES(12,'Computer')
实例:查询学生信息,包括ID,姓名、专业名称
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students INNER JOIN Majors
ON Students.MajorID = Majors.ID
&查询结果:
根据结果可以清晰看到,确实只有匹配的行。学生Lucy的信息丢失了。
但是,inner join也会产生重复数据。如果将Majors表的主键约束去掉,可以插入重复的ID,如:
DELETE FROM Majors
INSERT INTO Majors(ID,Name) VALUES(10,'English')
INSERT INTO Majors(ID,Name) VALUES(10,'Computer')
继续执行上面的关联语句,结果为:
如果是LEFT JOIN也会有重复记录,其结果为:
RIGHT JOIN 结果与INNER JOIN一样。
后续我们会深入研究JOIN的具体原理。
与内连接相比,即使没有匹配行,也会返回一个表的全集。
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
重点:至少有一方保留全集,没有匹配行用NULL代替。
1)LEFT OUTER JOIN,简称LEFT JOIN,左外连接(左连接)
结果集保留左表的所有行,但只包含第二个表与第一表匹配的行。第二个表相应的空行被放入NULL值。
依然沿用内链接的例子
(1)使用左连接查询学生的信息,其中包括学生ID,学生姓名和专业名称。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students LEFT JOIN Majors
ON Students.MajorID = Majors.ID
通过结果,我们可以看到左连接包含了第一张表的所有信息,在第二张表中如果没有匹配项,则用NULL代替。&
2)RIGHT JOIN(right outer join)右外连接(右连接)
右外连接保留了第二个表的所有行,但只包含第一个表与第二个表匹配的行。第一个表相应空行被入NULL值。
右连接与左连接思想类似。只是第二张保留全集,如果第一张表中没有匹配项,用NULL代替
依然沿用内链接的例子,只是改为右连接
(1)使用右连接查询学生的信息,其中包括学生ID,学生姓名和专业名称。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students RIGHT JOIN Majors
ON Students.MajorID = Majors.ID
查询结果:
通过结果可以看到,包含了第二张表Majors的全集,Computer在Students表中没有匹配项,就用NULL代替。&
3)FULL JOIN (FULL OUTER JOIN,全外连接)
全外连接,简称:全连接。会把两个表所有的行都显示在结果表中
1)使用全连接查询学生的信息,其中包括学生ID,学生姓名和专业名称。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students FULL JOIN Majors
ON Students.MajorID = Majors.ID
查询结果:&
包含了两张表的所有记录,没有记录丢失,没有匹配的行用NULL代替。
4、CROSS JOIN(交叉连接)
交叉连接。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。&
简单查询两张表组合,这是求笛卡儿积,效率最低。
笛卡儿积:笛卡尔乘积,也叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。
1)交叉连接查询学生的信息,其中包括学生ID,学生姓名和专业名称。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students CROSS JOIN Majors
查询结果:
2)查询多表,其实也是笛卡儿积,与CROSS JOIN等价,以下查询同上述结果一样。
这个可能很常见,但是大家一定要注意了,这样就查询了两张表中所有组合的全集。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students,Majors
3)加了查询条件
注意:在使用CROSS JOIN关键字交叉连接表时,因为生成的是两个表的笛卡尔积,因而不能使用ON关键字,只能在WHERE子句中定义搜索条件。
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students CROSS JOIN Majors
WHERE Students.MajorID = Majors.ID
查询结果:
查询结果与INNER JOIN一样,但是其效率就慢很多了。
5、全部实例脚本&
CREATE DATABASE TestDB
USE TestDB
------------------------------------------
--创建相关表
IF OBJECT_ID('Students','U') IS NOT NULL
DROP TABLE Students
--学生信息表
CREATE TABLE Students(
ID int primary key not null,
Name nvarchar(50),
City nvarchar(50),
MajorID int
--专业信息表
IF OBJECT_ID('Majors','U') IS NOT NULL
DROP TABLE Majors
CREATE TABLE Majors(
ID int primary key not null,
Name nvarchar(50)
--教师信息表
IF OBJECT_ID('Teachers','U') IS NOT NULL
DROP TABLE Teachers
CREATE TABLE Teachers(
ID int primary key not null,
Name nvarchar(20) not null
--预置数据
DELETE FROM Students
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(101,'Tom',20,'BeiJing',10)
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(102,'Lucy',18,'ShangHai',11)
DELETE FROM Majors
INSERT INTO Majors(ID,Name) VALUES(10,'English')
INSERT INTO Majors(ID,Name) VALUES(12,'Computer')
DELETE FROM Teachers
INSERT INTO Teachers(ID,Name) VALUES(101,'Mrs Lee')
INSERT INTO Teachers(ID,Name) VALUES(102,'Lucy')
SELECT ID,Name FROM Students
SELECT ID,Name FROM Teachers
SELECT ID,Name FROM Students
SELECT ID,Name FROM Teachers
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students INNER JOIN Majors
ON Students.MajorID = Majors.ID
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students LEFT JOIN Majors
ON Students.MajorID = Majors.ID
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students LEFT JOIN Majors
ON Students.MajorID = Majors.ID
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students FULL JOIN Majors
ON Students.MajorID = Majors.ID
--交叉连接
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students CROSS JOIN Majors
--交叉连接
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students CROSS JOIN Majors
WHERE Students.MajorID = Majors.ID
--一次查询多表
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students,Majors

我要回帖

更多关于 数据库查询表格语句 的文章

 

随机推荐