MySQL使用記錄 group concat

2021-09-23 06:19:23 字數 2623 閱讀 5267

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_concat
from 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...