mysql sql语句两条合并成一条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql sql语句两条合并成一条相关的知识,希望对你有一定的参考价值。
在同一张表中查询
SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程'
得到的结果 AAAH
SELECT FSTRUCTUREID FROM tinfopgm WHERE FSTRUCTUREID LIKE 'AAAH%'
怎样把两条sql语句合并成一条查询语句?
用这条语句
SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程'
来替换下面模糊查询语句的 *****号
SELECT FSTRUCTUREID FROM tinfopgm WHERE FSTRUCTUREID LIKE '*****%'
)%’
根据第一次查询出来的值 对第二次进行模糊查询追问
因为 SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程'
得到的结果 AAAH
我是想用 查询来代替 AAAH 就像子查询一样 跟你想的一样的,但是我们俩写的都用不了
SELECT fstructureid FROM tinfopgm WHERE FSTRUCTUREID like ("'"+(SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程')+"%'")
字符串拼接 -------我是根据下边的测试了下 没测试出来~
MSSQL: 直接用+号
ORACLE:可以用 || 双竖线
另给你几个据说正确的like后面如何用select语句
(1)select * from tab_xn_company t where t.company_name like '%'||(select c.company_name from tab_xn_company c where c.company_id='1179')||'%';
(2)select * from r_user t where t.description like (select '%'||tt.supplier_name||'%' from crm_supplier_baseinfo tt where tt.supplier_id = '94581');
(3)select * from A, B where A.id = B.id and A.name like '%'||B.name||'%'
是这样的 参考技术C SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程' AND FSTRUCTUREID LIKE 'AAAH%'
或者
SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程' OR FSTRUCTUREID LIKE 'AAAH%'追问
因为 SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程'
得到的结果 AAAH
我是想用 查询来代替 AAAH 就像子查询一样
但是写出来的用不了
SELECT fstructureid FROM tinfopgm WHERE FSTRUCTUREID like ("'"+(SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程')+"%'")
SQL多行合并为一行,SQL语句如何写
把这样的数据
合并为这样的
通过相同的ID
最简捷直观的方法就是利用分组
select ID,Sum(语文) 语文,
Sum(数学) 数学,
Sum(英语) 英语
from scores
group by ID
你可以直接用下面的语句在SQL Server中测试结果:
DECLARE @ScoresVar table(ID int NOT NULL,
Chinese int,
Math int,
English int);
Insert into @ScoresVar
values(1 ,70, null, null)
Insert into @ScoresVar
values(1 ,null,80, null)
Insert into @ScoresVar
values(1 ,null, null, 90)
Insert into @ScoresVar
values(2 ,75, null, null)
Insert into @ScoresVar
values(2 ,null,85, null)
Insert into @ScoresVar
values(2 ,null, null, 95)
select ID,
SUM(Chinese) Chinese,
Sum(Math) Math,
Sum(English) English
from @ScoresVar
group by ID
还有一种方法,可能更通用一点,利用 FOR XML PATH 和STUFF函数来做,虽然复杂,但是对表的数据类型无限制。
还是上面的测试数据,你可以通过下面的代码来得到你想要的数据:
SELECT ID,STUFF((SELECT ',' + Cast(A.Chinese as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As Chinese,
STUFF((SELECT ',' + Cast(A.Math as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As Math,
STUFF((SELECT ',' + Cast(A.English as varchar)
FROM @ScoresVar A Where A.ID=B.ID FOR XML PATH('')),1,1,'') As English
From @ScoresVar B
Group By ID-- 输出结果
ID Chinese Math English
1 70 80 90
2 75 85 95 参考技术A select id,max(语文) 语文,max(数学) 数学,max(英语) 英语
from tab
group by id
以上是关于mysql sql语句两条合并成一条的主要内容,如果未能解决你的问题,请参考以下文章