SQL QUERY 如何通过其他约束 select 列

SQL QUERY how to select column by other constraints

我正在使用 backpack-crud 控制器 PHP-Laravel。

有了背包(图书馆)给的crudController,我要做的就是 是用 Laravel Eloquent 查询它(也可以使用原始 sql 查询。

比背包库会自动 为我打印列表视图。

但我正在为这个困难的查询而苦苦挣扎。

问题是我有 4 列,

session_id | column_id | batch | data
10         | 1         | 1     | data1
10         | 2         | 1     | data2
10         | 1         | 2     | data1*
10         | 2         | 2     | data2*

假设这是我拥有的数据。 我想按 session_id、批次显示此分组, 并按 column_id.

在行内排序

所以结果查询会是这样的

1 :  data1   data2
2 : data1*  data2*

如果有第三批数据

session_id | column_id | batch | data
10         | 1         | 3     | data1**

然后它会出现在第三批下

3 : data1**

我可以用代码做到这一点,但不能用 sql。

任何建议将不胜感激。

这看起来像 sql 服务器中的 PIVOT。很遗憾 mysql 没有此功能。

我可以使用 GROUP_CONCAT 为您提供近似的原始 mysql 查询。假设你的 table 名字是 mytable.

SELECT 
   session_id, 
   batch, 
   GROUP_CONCAT(data ORDER BY column_id SEPARATOR ', ') AS dataList 
FROM mytable
GROUP BY session_id, batch

然后您可以使用给定的分隔符拆分别名 dataList 列(这里我使用了 ,)。 您可以根据需要根据 data 列中包含的数据更改分隔符。

希望对您有所帮助。