sql 语句 用union合并表 但是我在前面加了个字段用来排序。数据不相同了。 union不会合并了......

有什么办法可以解决这个重复问题吗、,?每个表都加了as mark用来做排序 可是这样数据就不相同了。就出现了重复。有什么好办法解决吗?

strsql="select * from (select * ,150 as mark from corpinfo where viewsign=0 and instr(','+product+',',',"&srt_pdt&",') >0 union select * ,100 as mark from corpinfo where viewsign=0 and product like '%"&srt_pdt&"%' union select * ,50 as mark from corpinfo where viewsign=0 and ( name like '%"&srt_pdt&"%' or intro like '%"&srt_pdt&"%' )) as a order by mark desc,prize desc,id desc"

'+product+' 拼接字符串时应为: "+product+"
觉得问题应该出在这地方,对于开发程序来说,你的写法在这里不会把变量值替换进字符串.
而是直接把'+变量名+'当成字符串的一部分传给了数据库执行.

如果你用来union的三个源表 列数量 和 列类型 都一致,那么在相同位置加上用来做排序的列就没有问题.
* ,150 as mark
* ,100 as mark
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-04
还有其他方法么?
如果你是要两个表合并后用where条件的话,那就不如来个子查询了?
select c.* from (select id,name,time from a union select id,name,time from b) as c where ……
第2个回答  2010-12-30
你都加上了不同值一个150,一个100,它们怎么能算相同数据啦呢!你前面的select和后边那个select不可能出现相同数据而合并成一条数据了

sql 语句 用union合并表 但是我在前面加了个字段用来排序
在SQL语句中使用UNION合并表时,若希望在前面加入字段用于排序,需注意拼接字符串的格式。正确拼接应为: "' product '". 若你直接使用包含变量名的拼接方式,数据库执行时,变量值不会被替换进字符串。对于开发程序,确保在使用UNION时,合并的三个源表的列数量和列类型一致极为重要。在相同位置加上用...

SQL UNION 的用法中前后两个查询语句所含字段是否一定要相同?
字段名称可以不同,字段数量、数据类型、顺序必须相同。UNION 操作符用于合并两个或多个 SELECT 语句的结果集。需要注意的是 1、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。2、该命令连接的结果集中有重复的值不会被显示。

SQL语句中UNION排序问题?
UNION关键字的删除两个查询之间重复数据的功能会不起作用,如果需要保持删除重复记录的能力,则需要使用DISTINC关键字,例如:\\x0d\\x0aselect distinct a.输出字段1, a.输出字段2, a.输出字段3, ...a.输出字段n from \\x0d\\x0a(select * ,1 as px from 表A where 软件名称 like '%迅雷%...

sql server 中union的用法
首先,UNION在SQL Server中用于合并两个或更多SELECT语句的结果集,但关键点在于这些查询的列数和数据类型必须完全一致。尝试将两个分别查询不同表的结果合并时,若列数或类型不匹配,如一个查询的OrderTime列是日期类型,另一个是字符类型,会导致错误提示。解决这个问题的方法是使用CONVERT函数将数据类型...

union组合结果集时的order问题
这与某些情况下希望在每个查询后先进行排序,然后再进行union操作的非正常用法形成对比。此外,union后面可以添加all关键字,该选项在默认情况下会移除重复项,但在使用all时,将组合所有结果,不进行筛选。对于确认各查询结果无重复情况,建议使用all,以提高效率。在SQL查询结果合并时,了解union all的用法...

SQL UNION 子句如何组合并去重结果行?
在 SQL 中,UNION 子句是一个强大的工具,用于合并两个或更多 SELECT 语句的结果,前提是它们具有相同数量的列、数据类型和列的顺序。基本语法如下:SELECT column1, column2 FROM table1 [WHERE condition]UNION SELECT column1, column2 FROM table2 [WHERE condition]例如,如果有一个名为 CUSTOMERS...

sql 两表数据合并 union
--两种合并方式,第一种用union all 合并保持数据列数不变 select * from table1 union all select * from table2 union all select * from table3 --第二种,合并后多个表的字段排列为一列 select * from table1,table2,table3 你说的应该是属于第二种,不能用union all ...

oracle 里SQL语句UNION怎么用
FL_PARENTID ,FL_ID 这个句子的意思是将两个sql语句union查询出来,查询的条件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匹配,(也就是存在). UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。 在查询中会遇到 UNION ALL...

sql 合并表 union的问题
或者你只想得到结果:select name,row_number() over(order by name) id from (select name from a union select name from b) ta 如果是想把合并的结果插入到表中,如果表的id字段为自动增长列,直接这样就行了:insert into c select name from a union select name from b ...

MySQL使用union导致数据丢失的解决办法
union在做一些数据合并统计的时候很有用,但稍不注意就会踩坑导致数据丢失统计出错。 使用union时一定要注意union自带了去重功能,而且机制类似于 把左右两边的数据完全做完合并再来一个distinct,所以一旦有两行的数据一模一样时,union会去掉这些重复行,即使这些重复行只是存在于其中一个结果集的 。unio...

相似回答