澳门威利斯人_威利斯人娱乐「手机版」

来自 威利斯人娱乐 2019-07-13 18:56 的文章
当前位置: 澳门威利斯人 > 威利斯人娱乐 > 正文

mysql如何实现多行查询结果合并成一行,关联模型

1、关联模型的应用

选择函数:group_concat(),达成贰个ID对应七个名称时,原来为多行数据,把称呼合併成一行。

使用GROUP_CONCAT语法

  定义形式:新建二个类公事UserRelationModel.class.php

其完整语法:

 

Class UserRelationModel extends RelationModel{         protected $tableName = 'user';//主表名称  
    protected $_link = array(
      'article'=>array(//从表名称
        'mapping_type'=>HAS_MANY,//主表对于从表的关系 主表可以有很多从表内容
        'foreign_key'=>'uid',//从表中的主表外键
        ......
      ),

    );
  }

GROUP_CONCAT(expr)

语法: 

 2 、独立分组的选拔

该函数重回带有来自三个组的连续的非NULL值的字符串结果。其总体的语法如下所示:

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 

  前边都以接纳的分组格局,在公私配置中布局如下

GROUP_CONCAT([DISTINCT] expr [,expr ...]

上面演示一下这一个函数,先成立二个学员选课表student_courses,并填写一些测验数据。 

  return array(

[ORDER BY {unsigned_integer | col_name | expr}

 

    'APP_GROUP_LIST'=>'Index,Admin...',

[ASC | DESC] [,col_name ...]]

SQL代码

    'DEFAULT_GROUP'=>'Index',

[SEPARATOR str_val])

Java代码  

    //开启独立分组

mysql> SELECT student_name,

CREATE TABLE student_courses (   

    'APP_GROUP_MODE'=>1,//0为暗中同意分组

-> GROUP_CONCAT(test_score)

student_id INT UNSIGNED NOT NULL,   

    'APP_GROUP_PATH'=>'Modules',//独立分组的门路默以为Modules,能够协和定义如Application

-> FROM student

courses_id INT UNSIGNED NOT NULL,   

  );

-> GROUP BY student_name;

KEY(student_id) 

 3、mysql CONCAT函数将选出字段合併成字符串格局,用间隔符(默感到逗号',').

Or:

); 

  具体用法:SELECT CONCAT(name) AS cname FROM usertable

mysql> SELECT student_name,

INSERT INTO student_courses VALUES (1 ,  1 ), ( 1 ,  2 ), ( 2 ,  3 ), ( 2 ,  4 ), ( 2 ,  5 );   

  GROUP_CONCAT([DISTINCT] expr [,expr ...]
  [ORDER BY {unsigned_integer | col_name | expr}
  [ASC | DESC] [,col_name ...]]
  [SEPARATOR str_val])

-> GROUP_CONCAT(DISTINCT test_score

  www.2cto.com  

  SEPARATOSportage 钦命间隔符

-> ORDER BY test_score DESC SEPARATOR ' ')

若要查找学生ID为2所选的学科,则运用上面这条SQL:


-> FROM student

Java代码  

-> GROUP BY student_name;

mysql> SELECT student_id, courses_id FROM student_courses WHERE student_id= 2 ;   

在MySQL中,你可以收获表明式组合的连接值。你可以采取DISTINCT删去重复值。倘令你希望多结果值实行排序,则应当利用 OLacrosseDE大切诺基 BY子句。若要按相反顺序排列,将 DESC (递减) 关键词增加到你要用OOdysseyDER BY 子句进行排序的列名称中。私下认可顺序为升序;可利用ASC将其鲜明内定。 SEPARATO奥迪Q7 前面紧跟着应该被插入结果的值中间的字符串值。默以为逗号 (‘,')。通过点名SEPARATOTucson '' ,你能够去除全体分隔符。

------------ ------------   

使用group_concat_max_len系统变量,你可以安装允许的最大尺寸。 程序中进行那项操作的语法如下,个中 val 是一个无符号整数:

| student_id | courses_id |   

SET [SESSION | GLOBAL] group_concat_max_len = val;

------------ ------------   

其整体语法: GROUP_CONCAT(expr) 该函数重返带有来自...

| 2  |  3  |   

| 2  |  4  |   

本文由澳门威利斯人发布于威利斯人娱乐,转载请注明出处:mysql如何实现多行查询结果合并成一行,关联模型

关键词: 澳门威利斯人