当前位置: 代码迷 >> Sql Server >> 如何查询两张表的所有内容,排除相同的内容
  详细解决方案

如何查询两张表的所有内容,排除相同的内容

热度:45   发布时间:2016-04-27 13:58:21.0
怎么查询两张表的所有内容,排除相同的内容?

SQL code
CREATE TABLE ee_work(work_id INT NOT NULL identity(1,1) PRIMARY KEY,work_name NVARCHAR(20) NOT NULL UNIQUE,)CREATE TABLE ee_terms(term_id INT NOT NULL identity(1,1) PRIMARY KEY,term_name NVARCHAR(10) NOT NULL UNIQUE,work_id INT FOREIGN KEY REFERENCES ee_work(work_id))


select ee_work.*,ee_terms.* from ee_work,ee_terms
查询后返回如图结果:

请问该怎么写查询语句?谢谢!

我想弄成这样的页面效果:


asp.net的页面的执行代码:
C# code
……string html = string.Empty; //HTML页面SqlCommand cmd = new SqlCommand(cmdtext, conn); //创建SqlDataReader对象,用于保存查询数据信息SqlDataReader dr = cmd.ExecuteReader();//应用while循环语句获取在SqlDataReader中获取到的数据while (dr.Read()){  //html += ……;自己绘制表格}……this.classlist.Text = html;dr.Close();conn.Close();



------解决方案--------------------
SQL code
--测试数据DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))INSERT @t SELECT '001',NULL ,'山东省'UNION ALL SELECT '002','001','烟台市'UNION ALL SELECT '004','002','招远市'UNION ALL SELECT '003','001','青岛市'UNION ALL SELECT '005',NULL ,'四会市'UNION ALL SELECT '006','005','清远市'UNION ALL SELECT '007','006','小分市'--深度排序显示处理--生成每个节点的编码累计(相同当单编号法的编码)DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))DECLARE @Level intSET @Level=0INSERT @t_Level SELECT ID,@Level,IDFROM @tWHERE PID IS NULLWHILE @@ROWCOUNT>0BEGIN    SET @[email protected]+1    INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID    FROM @t a,@t_Level b    WHERE a.PID=b.ID        AND [email protected]END--显示结果SELECT SPACE(b.Level*2)+'|--'+a.NameFROM @t a,@t_Level bWHERE a.ID=b.IDORDER BY b.Sort/*--结果|--山东省 |--烟台市 |--招远市 |--青岛市|--四会市 |--清远市 |--小分市--*/
------解决方案--------------------
没有看内容,只从标题分析:怎么查询两张表的所有内容,排除相同的内容?
SQL code
SELECT * FROM ee_work UNIONSELECT * FROM ee_terms--两结果集合并,不保留重复的部分--反之SELECT * FROM ee_work INTERSECTSELECT * FROM ee_terms--两结果集合并,只保留重复的部分
------解决方案--------------------
SQL code
select ee_work.*,ee_terms.* from ee_work left join ee_termson ee_work.wrok_id =ee_terms.work_id
  相关解决方案