我需要排序date的concat范围内group_concat,而我的查询运行良好:
SELECT
report.`Name`,
GROUP_CONCAT(
CONCAT(
"[",
DATE(report.Date) --(not working) order by DATE(report.Date) ,
',',
report.ProductPrice --(not working) order by DATE(report.ProductPrice) ,
"]"
)
) AS ProductPrice
FROM report
GROUP BY report.Name ;
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT MemberId, a.MemberName, GROUP_CONCAT(FruitName) FROM a LEFT JOIN b ON
a.MemberName = b.MemberName GROUP BY a.MemberName
Run Code Online (Sandbox Code Playgroud)
表a
MemberID MemberName
-------------- ----------
1 Al
1 Al
3 A2
Run Code Online (Sandbox Code Playgroud)
表b
MemberName FruitName
--------------- --------------
Al Apple
Al Mango
A2 Cherry
Run Code Online (Sandbox Code Playgroud)
上述查询产生的结果:
MemberId MemberName GROUP_CONCAT(FruitName)
3 A2 Cherry
1 A1 Apple,Apple,Mango,Mango
Run Code Online (Sandbox Code Playgroud)
我使用的实际表格各有10列,所以只将一切存储在一个表中不是一种解决方法.这就是说,我怎么能更改查询只返回'Apple,Mango'了MemberNamé?
我有一个像这样设置的mysql表:
id uid keywords -- --- --- 1 20 corporate 2 20 corporate,business,strategy 3 20 corporate,bowser 4 20 flowers 5 20 battleship,corporate,dungeon
我希望我的输出看起来像是:
20 corporate,business,strategy,bowser,flowers,battleship,dungeon
但我最接近的是:
SELECT DISTINCT uid, GROUP_CONCAT(DISTINCT keywords ORDER BY keywords DESC) AS keywords FROM mytable WHERE uid !=0 GROUP BY uid
哪个输出:
20 corporate,corporate,business,strategy,corporate,bowser,flowers,battleship,corporate,dungeon
有没有人有办法解决吗?非常感谢提前!
我的PHP中的爆炸功能有问题.
我从数据库中提取字符串如下:
column_name
0,2000,0,3000,1000,7000,1000,0,0,0
Run Code Online (Sandbox Code Playgroud)
将它拉入一个名为$ recordset的对象后,我正在使用explode函数从中创建一个数组......如下所示:
$array = explode(",",$recordset->column_name)
Run Code Online (Sandbox Code Playgroud)
但是有些怎么样,阵列并不像我期望的那样......
这是我回应数组时得到的结果:
Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 3000
[4] => 7000
[5] => 2000
[6] => 1000
[7] => 1000
[8] => 0
[9] => 0
)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我没有得到我想要的值...但是,如果我的数据库中的字符串很短,请说:
1000,0,1200,0
Run Code Online (Sandbox Code Playgroud)
以上逻辑工作正常..
我不知道如何调试或解决这个问题..
请帮忙?
是否可以group_concat通过不同的ID记录:
GROUP_CONCAT(Column2 BY DISTINCT Column1)
我需要从column2不同的值中获取值column1.因为第2列中有重复值,所以我不能使用distinct column2.
有什么想法吗?谢谢!
编辑1
样本表记录:
ID Value
1 A
1 A
2 B
3 B
4 C
4 C
Run Code Online (Sandbox Code Playgroud)
使用GROUP_CONCAT我想要的[ GROUP_CONCAT(Value BY DISTINCT Id)],我将有一个输出:
A, B, B, C
编辑2
不知何故让我的group_concat工作:
GROUP_CONCAT(DISTINCT CONCAT(Id, '|', Value))
这将通过不同的id显示连接值,只需要在某处摆脱Id.没有这个concat功能你可以做到,但我需要分隔符.这可能不是一个好的答案,但无论如何我都会发布.
假设我有一张表格mytable:
select * from mytable:
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 1 | a |
| 1 | 2 | b |
+------+------+------+
我想用功能将b和c列分组group_concat:
select a, group_concat(b), group_concat(c) from mytable group by a
+------+-----------------+-----------------+
| a | group_concat(b) | group_concat(c) |
+------+-----------------+-----------------+
| 1 | 1,2 | a,b |
+------+-----------------+-----------------+
我的问题是,执行mysql的保证,那group_concat将永远以同样的顺序,我不会得到这样的结果,1,2在第二列和B,A在第三列?
我试图从3个不同的表中返回2个左连接的数据.所有表都返回多行.这是我的发言:
"SELECT s.*, GROUP_CONCAT(sp.photo) AS photos, GROUP_CONCAT(st.name) AS tags
FROM sites s
LEFT JOIN sites_photos sp
ON sp.sites_id = s.id
LEFT JOIN sites_tags st
ON st.sites_id = s.id
WHERE s.id = 30"
Run Code Online (Sandbox Code Playgroud)
此语句返回的数据如下所示:
Array
(
[id] => 30
[url] => www.test.be
[name] => test
[date] => 2014-08-16
[photos] => 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132191_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg, 201408141132194_gummies.jpg
[tags] => test, hello, ale, print, social, more, hcp, test, hello, ale, print, social, more, hcp
) …Run Code Online (Sandbox Code Playgroud) 我试图设置group_concat_max_lencodeigniter $this->db->query('SET GLOBAL group_concat_max_len=15000')但它不起作用.
我尝试过:
$q = 'SET GLOBAL group_concat_max_len=15000';
$this->db->query($q);
$this->db->select("group_concat(id) ids");
$this->db->from("table_name");
$data = $this->db->get()->row_array();
Run Code Online (Sandbox Code Playgroud)
但这并不能提供所有数据.对此有任何想法.谢谢!!!
在MySQL中有没有办法在group_concat()中使用不可打印的符号定义SEPERATOR?像ascii 3或类似的东西?
我试过了
group_concat(text SEPERATOR char(3))
Run Code Online (Sandbox Code Playgroud)
和
group_concat(text SEPERATOR 3)
Run Code Online (Sandbox Code Playgroud)
他们俩都行不通.
也许是逃避的方法?
我得到很长的文本,我想确保没有可打印的标志会破坏我的内容.所以我想用不可打印的标志分开它们......
有任何想法吗?
我有这样一张桌子:
fkey | sensor | depth | value
-----+--------+-------+-------
1 | 1 | 1 | 34
1 | 1 | 2 | 27
1 | 2 | 1 | 22
1 | 2 | 2 | 34
1 | 2 | 3 | 56
2 | 1 | 1 | 12
2 | 1 | 2 | 24
2 | 2 | 1 | 56
3 | 1 | 1 | 43
3 | 1 | 2 | 89
3 …Run Code Online (Sandbox Code Playgroud) group-concat ×10
mysql ×8
sql ×5
group-by ×2
left-join ×2
php ×2
codeigniter ×1
database ×1
distinct ×1
duplicates ×1
mariadb ×1
pivot-table ×1
select ×1
sql-order-by ×1