mysql中的group_concat
create
table film(
id int
primary
keyauto_increment
, name varchar
(128),
score float
);
插入資料
insert
into film(name,score)
values
('霸王別姬'
,9.5),
('校生剋的救贖'
,9.5),
('羅馬假日'
,9.1),
('這個殺手不太冷'
,9.5),
('鐵達尼號'
,9.5),
('唐伯虎點秋香'
,9.2),
('魂斷藍橋'
,9.2),
('亂世佳人'
,9.1),
('天空之城'
,9.1),
('辛德勒的名單'
,9.2),
('喜劇之王'
,9.1),
('大鬧天空'
,9.0),
('**之聲'
,9.0),
('美麗人生'
這是想查詢每個評分有哪些電影,就可以使用group_concat了
group_concat的最大值限制
set
[global
|session
] group_concat_max_len = val;
值是無符號的整型,最大值與版本位數有關
版本最小值
最大值32位
44294967295
64位4
18446744073709551615
如果 group_concat_max_len 的值被設定為小等於 512,那麼 group_concat 的返回值型別是 varchar 或 varbinary;否則是 text 或 blob
set
session group_concat_max_len=
18446744073709551615
;
django 中orm實現group_concatfrom django.db import models
from django.db.models import aggregate, charfield
# create your models here.
class film(models.model):
name = models.charfield(max_length=
128)
score = models.floatfield
class meta:
db_table =
'film'
class concat(aggregate):
"""orm用來分組顯示其他字段 相當於group_concat"
""function
='group_concat'
template =
'%(function)s(%(distinct)s%(expressions)s)'
def __init__(self, expression,
distinct
=false,*
*extra):
super(concat, self)
.__init__(
expression,
distinct
='distinct '
ifdistinct
else'',
output_field=charfield(),
**extra)
進入shell環境操作一下
(test)
(base) tj001@t-ubuntu:~/code/test/group_concat$ python manage.py shell
python 3.6.7 (default, oct 22 2018, 11:32:17)
[gcc 8.2.0] on linux
formore information.
(interactiveconsole)
>>
>>
> result = film.objects.values(
'score'
).annotate(film_name=concat(
'name'
))>>
> result
, , , ,
]>
>>
>
mysql 使用記錄
1 所有觸發器內部不能對本表進行update操作,因為造成迴圈觸發,可以使用儲存過程代替觸發器。即以下形式錯誤 drop trigger update trigger create definer root localhost trigger update trigger before update...
mysql 使用記錄
mysqladmin u username h host name password p new password p mysql set password for username host name password new password mysql update mysql.user se...
mysql使用優化記錄
使用in語句,in的列表明確並且有限時,可以使用。因為此時搜尋引擎會使用索引,但in的是乙個查詢結果時,索引將會沒有作用,會查詢全表。例子 使用in查詢時,in的列表有限且明確 select from on auction where pid in 10,11,20 此時的執行計畫,會使用建立在pi...