在一行中获取两行值的结果

bd1hkmkf  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(358)

联接查询的结果-

SELECT st_stock.name, st_stock.price, 
       FORMAT(st_stock.quantity,0), 
       st_stock.exp_date, 
       admin.username 
FROM `st_stock` 
  INNER JOIN `admin` ON FIND_IN_SET(admin.ID,st_stock.broker_id) AND st_stock.id='2'

样本数据

name        price     asjdb       exp_date            username
5.HK (HSBC) 74.40 HKD 100,000,000 2018-07-27 17:00:00 broker2
5.HK (HSBC) 74.40 HKD 100,000,000 2018-07-27 17:00:00 broker3

预期产量

5.HK (HSBC) 74.40 HKD 100,000,000 2018-07-27 17:00:00 broker2,broker3
qjp7pelc

qjp7pelc1#

如果这是sql,

SELECT st_stock.name, st_stock.price, 
           FORMAT(st_stock.quantity,0), 
           st_stock.exp_date, 
           GROUP_CONCAT(admin.username)
    FROM `st_stock` 
      INNER JOIN `admin` ON FIND_IN_SET(admin.ID,st_stock.broker_id) AND st_stock.id='2' GROUP BY st_stock.name
v09wglhw

v09wglhw2#

您没有指定正在使用的sql引擎。当涉及到更高级的聚合和窗口功能时,各个数据库引擎的实现会有所不同。
例如,在postgresql中,可以使用string\u agg aggregate函数:

SELECT name, price, asjdb, exp_date, string_agg(username,',') AS username
FROM d
GROUP BY name, price, asjdb, exp_date;

对于您将使用的其他数据库引擎:
甲骨文:listag
sql server:stringagg
mysql:group\u concat组
进一步reading:listagg in 数据库

相关问题