简体   繁体   English

在一行中获得2行值的结果

[英]get result of 2 rows value in one row

result of a join query- 联接查询的结果-

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'

Sample Data 样本数据

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

Expected Output 预期产量

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

You did not specify the SQL engine you are using. 您未指定要使用的SQL引擎。 When it comes to more advanced aggregate and windowing functions, implementations vary across database engines. 当涉及到更高级的聚合和窗口功能时,不同数据库引擎的实现有所不同。

In PostgreSQL for example, you would use the string_agg aggregate function: 例如,在PostgreSQL中,您将使用string_agg聚合函数:

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

For other database engines you would use: 对于其他数据库引擎,您将使用:

  1. Oracle: LISTAGG 甲骨文: LISTAGG
  2. SQL Server: STRINGAGG SQL Server: STRINGAGG
  3. MySQL: GROUP_CONCAT MySQL: GROUP_CONCAT

Further Reading: ListAGG in SQLSERVER 扩展 阅读: SQLSERVER中的ListAGG

If this is sql, 如果是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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM