有兩張表t1,t2,這兩張表分別有兩列name,course
t1 表含有資料:
小張,c語言
小張, 資料結構
小劉,go語言
t2表含有資料:
小張,c語言
小張, 資料結構
小張,高數
小劉,go語言
小劉,perl
小王,android
現在要找出t2表中name相同,course列比t1表中多出的記錄:
小張,高數
小劉,perl
uj5u.com熱心網友回復:
select t2.`name`,t2.`course` from t1 inner join t2 on t1.`name`=t2.`name` and not exists(select 1 from t1 where t2.`name`=t1.`name` and t2.`course`=t1.`course`);
uj5u.com熱心網友回復:
USE test;
DROP TABLE
IF EXISTS `t1`;
CREATE TABLE t1 (
`name` VARCHAR (10) NOT NULL,
`course` VARCHAR (10) NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = utf8;
DROP TABLE
IF EXISTS `t2`;
CREATE TABLE t2 (
`name` VARCHAR (10) NOT NULL,
`course` VARCHAR (10) NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = utf8;
INSERT t1
VALUES
('小張', 'c語言'),
('小張', '資料結構'),
('小劉', 'go語言');
INSERT t2
VALUES
('小張', 'c語言'),
('小張', '資料結構'),
('小張', '高數'),
('小劉', 'go語言'),
('小劉', 'perl'),
('小王', 'android');
SELECT DISTINCT
t2.`name`,
t2.`course`
FROM
t1
INNER JOIN t2 ON t1.`name` = t2.`name`
AND NOT EXISTS (
SELECT
1
FROM
t1
WHERE
t2.`name` = t1.`name`
AND t2.`course` = t1.`course`
);
DROP TABLE t1;
DROP TABLE t2;
uj5u.com熱心網友回復:
SELECT * FROM t2
WHERE t2.name IN (SELECT NAME FROM t1 GROUP BY NAME)
AND
t2.course NOT IN (SELECT course FROM t1 )
uj5u.com熱心網友回復:
SELECT * FROM t2WHERE t2.name IN (SELECT NAME FROM t1 GROUP BY NAME)
AND
t2.course NOT IN (SELECT course FROM t1 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112413.html
標籤:MySQL
上一篇:SQL優化
下一篇:求教關于新增表按條件計算的問題
