我面临一个相对简单的问题,但我无法设法解决问题。请记住,如果 PHP 可以使事情变得更容易,我将 PHP 与 Laravel 框架结合使用。
我有一个表格,里面填满了这样的数据:
ID | TRANSACTION_ID | BEACON_TYPE
---+----------------+---------------
1 | 1 | "abc"
2 | 2 | "def"
3 | 2 | "xyz"
我想按交易 ID 对它们进行分组,并将信标类型保留在数据中,如下所示:
ID | TRANSACTION_ID | BEACON_TYPE
---+----------------+---------------
1 | 1 | "abc"
2 | 2 | "def", "xyz"
我试过使用 group by 但无济于事。关于如何实现这一目标的任何想法或提示?正如我之前所说,可能有一些方法可以使用 Laravel Eloquent 来完成。
最佳答案
假设您正在使用 MySQL,您正在寻找的函数是 GROUP_CONCAT()
。使用 Eloquent,它看起来像这样:
$transactions = DB::table('tableName')
->select('TRANSACTION_ID', DB::raw('GROUP_CONCAT(BEACON_TYPE SEPARATOR ', ') as BEACON_TYPE'))
->groupBy('TRANSACTION_ID')
->get();
请注意,如果您想更改分隔符,只需将 ', '
编辑为其他内容即可。默认分隔符是 ','
。
关于php - SQL : Merge two rows by some ID and keep values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57044839/