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
列中包含的数据更改分隔符。
希望对您有所帮助。
我正在使用 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
列中包含的数据更改分隔符。
希望对您有所帮助。