我创建了一个过程,该过程从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