程序中的MYSQL Group_concat

时间:2012-07-29 12:11:15

标签: php mysql database

我创建了一个过程,该过程从table1中选择不在table2中的名称列表

我使用临时变量首先选择table1中的名称并使用第一个表table1中的CSV值来过滤table2

请不要建议左外连接和其他查询方法。我的实际程序比较复杂。我在这里发布的程序是它的简化版本

CREATE TABLE table1(StudId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
                   Name VARCHAR(255));

INSERT INTO table1
 (Name)
  values
 ('Mugil'),
 ('Madhavan'),
 ('Kannan'), 
 ('Adhavan'), 
 ('Kamal'), 
 ('Nicolas');

 CREATE TABLE table2(StudentsName VARCHAR(255))

INSERT INTO table2 VALUES
 ('George'), 
 ('Clooney'),
 ('BradPitt'), 
 ('Kannan');

  DROP PROCEDURE IF EXISTS getStudentsList;
  CREATE PROCEDURE getStudentsList()
  BEGIN
    SELECT @CSVNames := GROUP_CONCAT("'", Name, "'")
      FROM table1;

    SELECT StudentsName 
      FROM table2
     WHERE StudentsName NOT IN (@CSVNames);
  END

  CALL getStudentsList();

预期输出

Names
George
Clooney
BradPitt

为什么上述过程正在返回输出,而不是上面的

收到的输出

Name
George
Clooney
BradPitt
Kannan

0 个答案:

没有答案