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 '*****%'

参考技术A SELECT FSTRUCTUREID FROM tinfopgm where FSTRUCTUREID LIKE ‘(select FSTRUCTUREID from tinfopgm where FNAME = '专项技术工程'
)%’

根据第一次查询出来的值 对第二次进行模糊查询追问

因为 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||'%'

本回答被提问者采纳
参考技术B SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程' AND FSTRUCTUREID LIKE 'AAAH%'
是这样的
参考技术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 = '专项技术工程')+"%'")

参考技术D SELECT FSTRUCTUREID FROM tinfopgm WHERE FNAME = '专项技术工程' and FSTRUCTUREID LIKE 'AAAH%'

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语句两条合并成一条的主要内容,如果未能解决你的问题,请参考以下文章

求助:SQLSERVER多条查询语句合并

mysql如何合并两条记录,或者将查询出来的结果相连

SQL多行合并为一行,SQL语句如何写

如何将这两条 SQL 语句合并为一条?

SQL语句怎么实现几列数据合并成一条??

求助,oracle多行数据合并成一行