查询两个表中字段个数不同,名称不同的SQL语句

语句

此sql语句能对两个不同表不同结构不同字段进行查询,并且能分出哪个记录是属于哪个表中的

有两个表
table1结构如下
id title content

table2结构如下
id content bigclass smallclass

sql="select id, title, content,'' as bigclass,'' as smallclass, 'tbl1' as tbl from table1 where title like '%"&keyword&"%' or content like '%"&keyword&"%' union select id, '' as title, content,bigclass,smallclass, 'tbl2' as tbl from table2 where content like '%"&keyword&"%' order by id desc"

这条语句即可实现查询。
以asp为例,则通过
set rs=conn.execute(sql)
while not rs.eof
……
……
response.write rs("tbl")'此值就是判断数据是哪个表的
……
……
rs.movenextwend

分析以上sql语句,其实也就是通过as把两个表中的字段名统一,字段数不够的用('')括号内的,即空串代替,当然如果你愿意也可以用非空串代替如('this is bigclass belong to table2'),这样也可便于区分是哪个表中的数据。此sql语句中巧妙地运用了'tbl1' as tbl这条来判断语句是属于哪个表的,以便对数据进行处理,特别是对于站内搜索,搜索不同表时在一个页面显示结果,根据不同的表把不同的id值传入不同表所对应的显示页面,有的要用readnews.asp有的要用other.asp这类页面,用起来很方便。
欢迎大家一起探讨!

时间: 2024-09-12 15:17:35

查询两个表中字段个数不同,名称不同的SQL语句的相关文章

数据库 mysql-如何查询两个表的字段有相同部分但不完全相同的?

问题描述 如何查询两个表的字段有相同部分但不完全相同的? 我手上有两张表,都存了有地名,现在我需要比较两张表的地名,看看有哪些是相同但不完全一样的(比如表a中是北京市而表b中写的北京),同时表a中需要满足pid>0且city=0 我自己写了个语句 $sql="select * from byzk_areas a left join byzk_fuiou_city b on a.name like 'b.cname%' where a.pid>0 and a.city=0";

sql server-c# sqlserver 查询两个表中数据用datagridview 显示出来 老师出错 求大神指导

问题描述 c# sqlserver 查询两个表中数据用datagridview 显示出来 老师出错 求大神指导 string sql = " select a.2, a.3, b.2, b.3 from a, b, c where a.1= c.1 and b.1 = c.1 "; //查询语句太长 我就直接把意思表达出来 没有粘代码 DataSet ds1 = new DataSet(); DataTable dt = new DataTable (); DataSet ds2 =

name-有两个表,字段的个数不同,想取出a表的所有数据和b表的数据不等于a表的。

问题描述 有两个表,字段的个数不同,想取出a表的所有数据和b表的数据不等于a表的. 想取出a表的所有name 的数据和b表的name不等于a表name的数据 例如: a表有字段 name b表也有字段 name a表有name:张三 王五 b表有name:李四 张三 a,b两个表的字段个数不同. 最后取出的是:张三,李四,王五. 解决方案 select a.name from a union select b.name from b 解决方案二: select a.name from a --取

用联接来查询两个表

本文仅作为初学者SQL应用备忘录 我们经常要查询两个表中某个字段相同的和不同的记录,用联接来进行查询可以很方便地得到所要的结果.一.什么是联接 联接:join 表示两个表的关系,我们可以把两个表看成两个集合.假设有两个表,我们用A和B来表示,这两个表有一个或者多个相同的字段.那么,就存在着以下三个不同的集合:1.交集:两个表中字段相等的记录2.A交B补:在A中,且相同字段的内容不等于B的记录3.B交A补:在B中,且相同字段的内容不等于A的记录 二.用联接来查询 join有三种用法与以上三个集合对

查询一张表中两个字段重复的数据并得到其主键?

问题描述 希望各位路过的大侠 帮小弟一把.感激不尽. 如何查询一张表中两个字段都重复的数据以及每组中的第一条数据的主键? 情况如下: A表: a1 a2 a3  a4   都列a1     a2            a3                  a41       m              n                   o2       m              n                   k3       j                k     

mysql update 根据表中字段查询另一张表更新更新

问题描述 mysql update 根据表中字段查询另一张表更新更新 mysql有两张表, 班级表class,包含 | id | name | | 1 | 一班 | | 2 | 二班 | 学生表student,其中classId为空,className有值并对应class表中的name | id | name | classId | className | | 1 | 一班 | | 一班 | | 2 | 二班 | | 二班 | | 3 | 一班 | | 一班 | | 4 | 二班 | | 二班

在Derby数据库中联表查询的时候遇到两个表中相同的列名如何使用rs.getString(表名.列名查询)?表名.列名试过不行

问题描述 在Derby数据库中联表查询的时候遇到两个表中相同的列名如何使用rs.getString(表名.列名查询)?表名.列名试过不行.希望高手回答!!!!! 解决方案 解决方案二:自己顶顶先等待高手的答复~~~~~解决方案三:好像一般数据库的都不行一种方式用列序号取,最好还是改成其他名字解决方案四:终于有兄弟回复了,感激一下先.但是很多数据库都是支持的,比如说我们可爱的MySQL,SQLServer之类的稳定的数据库.Derby肯定是有的,但是我们不知道罢了.它的语法格式解决方案五:查询的时

并发操作-a,b两个请求并发 注册相同用户名,假如表中字段未设置唯一索引,程序上如何控制唯一性啊

问题描述 a,b两个请求并发 注册相同用户名,假如表中字段未设置唯一索引,程序上如何控制唯一性啊 a,b同时查询表,结果是可以注册的,所以都执行了insert,但用户名相同,这样数据就不唯一了.是会这样吗,如何避免呢? 解决方案 把查询和插入放在同一事务中,可以保证整个事务中数据库数据的一致性,这样应该可以避免你说的问题. 上述并发一起的问题,根源在于查询与插入两个时间点数据库数据不一致导致. 解决方案二: 必须有有个不同的key,比如你可以增加一个字段,为userid,这个不会变,但用户名可以

查询结果-查询一张表中的某个字段对应另一张表中多条数据某个字段等于第一张表的那个字段的数据,并按要求显示

问题描述 查询一张表中的某个字段对应另一张表中多条数据某个字段等于第一张表的那个字段的数据,并按要求显示 给的表例如 表一: stuID stuName 1 小明 2 小红 表二: stuID course Score 1 数学 97 1 语文 70 1 英语 88 2 数学 92 要求查询结果为: stuID stuName 语文 数学 英语 1 小明 70 97 88 2 小红 92 解决方案 类似下面这样,下面语句没有调测过. select stuID,(select stuName fr