在MYSQL中怎么把多条记录 变为一条查询出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MYSQL中怎么把多条记录 变为一条查询出来相关的知识,希望对你有一定的参考价值。

mysql中怎么把多条记录 变为一条查询出来;
如A表中有字段ID,message和orderId,现在有多条orderId是相同的记录,我要把这些记录的所有的MESSAGE显示在一起查询出来,怎么弄?

请高手指点

我自己试过这样的方法,但是要把错不知道为什么:
DELIMITER $$

CREATE
FUNCTION `cx2`.`getOther`(id INT)
RETURNS VARCHAR(10000)
BEGIN
DECLARE r VARCHAR(10000)
SET r = ''
SELECT r = r + ',' + message FROM cx2.othermessage WHERE order_oid=id
RETURN r
END$$

DELIMITER ;
只用SQL实现,而且A表中有个自段是关联了用户ID的,所有在查询出来的时候还要把ID转换成NAME

参考技术A 对查询出来的结果集合进行for循环。
在循环里面,将信息加起来啊~
参考技术B oh ,no ,use distinct ---->select distinct

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

查询语句:
select bif_code,name from BIS_BIF_INIT

表结构:
bif_code name
9040 中国工商银行
9008 光大银行
9005 中国农业银行

效果这样:
9005,交通银行;9040,中国工商银行;

谢谢各位大神
最后拼接成一条记录

首先,看你是想导出成文本,还是直接插表里
要是导出的话,用spool就行

你那个试试,用下面三句

spool e:\log.txt; (当然随便放什么地方,起什么名,路径对了就行)
select bif_code||','||name||';' from bis_bif_init;
spool off;

然后你去路径哪里找那个log.txt,里面就是你说那格式的,这格式可以调整
你要想放表里也行中间那句可以换成
select 'insert into bis_bif_init( 新列名 ) values(' ||bif_code|| ',' || name || ') where xxx;' from bis_bif_init;
就是说格式自己定,''中想加啥加啥用||连起来就行。同样去找txt,格式就是你定的那样。
-------------------------------------------------------------------------------------------
这是一种txt的,还有一个,如果你想在这个表的新列里直接显示加逗号那个格式的,也可以。就不用txt了,下次直接导出该列就行。但需要在表里加个列

alter table BIS_BIF_INIT add xxx(新列名字) char(100) generated always as (bif_code||','||name);

然后表里就有这个拼好的列,可能字符会很多,定大点

------------------------------------------------------------------------------------
最后一种,直接建个视图得了,省事,就一句话
create view vie_bis_bif_init as bif_code||','||name||';' from bis_bif_init;
参考技术A select replace(wmsys.wm_concat(bif_code||','||name||';'),';,',';') from BIS_BIF_INIT;
这个函数你不一定有,它是建库时的其中一个关于wmsys的选项,如果没有,想想办法本回答被提问者采纳
参考技术B 很简单,
环境:
SQL> create table bis_bif_init(bif_code integer,name varchar2(30));
SQL> insert into bis_bif_init values (9040,'China Bussiness Bank');
1 row created.
SQL> insert into bis_bif_init values (9002,'Germany BANK');
1 row created.
SQL> commit;
Commit complete.

脚本:
declare
i integer:=1;
string_out varchar2(10000):='';
type bbi_table_type is table of bis_bif_init%rowtype index by binary_integer;
v_bbi_table bbi_table_type;
begin
select bif_code,name bulk collect into v_bbi_table from bis_bif_init;
for i in 1..v_bbi_table.count loop
string_out:=string_out||v_bbi_table(i).bif_code||','||v_bbi_table(i).name||';';
end loop;
dbms_output.put_line(string_out);
end;

结果:
SQL> declare
i integer:=1;
2 3 string_out varchar2(10000):='';
4 type bbi_table_type is table of bis_bif_init%rowtype index by binary_integer;
5 v_bbi_table bbi_table_type;
6
7 begin
8 select bif_code,name bulk collect into v_bbi_table from bis_bif_init;
9 for i in 1..v_bbi_table.count loop
10 string_out:=string_out||v_bbi_table(i).bif_code||','||v_bbi_table(i).name||';';
11 end loop;
12 dbms_output.put_line(string_out);
13 end;
14 /

9040,China Bussiness Bank;9002,Germany BANK;

PL/SQL procedure successfully completed.

别忘记加上SQL> set serveroutput on
................

以上是关于在MYSQL中怎么把多条记录 变为一条查询出来的主要内容,如果未能解决你的问题,请参考以下文章

mysql怎么查询一条记录的前一条记录和后一条记录

mysql删除重复数据,保留一条

MySQL高级查询函数(单行函数)

一个事务中多条查询sql是取最新数据吗

MYSQL中查讯咋查第一条记录!

用insert into 怎么添加多条记录