我试图根据表B中的值从表A中选择值。但是,我不知道该使用什么。
目标:
就数据库而言,我将使用一个选择查询,该查询将表A(包含所有值)和表B(基本上存储表A中的值的副本)进行比较。
这是我的查询。 wp_ml_skill_class 是表A, wp_ml_character_skill 是表B
SELECT DISTINCT
s.skill_name, s.skill_id, c.char_id, c.um_id, c.class_id
FROM
`wp_ml_skill_class` sc
JOIN
`wp_ml_skill` s
ON
(s.skill_id = sc.skill_id)
JOIN
`wp_ml_character` c
WHERE
c.class_id = 3
AND
c.char_id = 5
AND
sc.skill_id
NOT IN
(SELECT cs.skill_id FROM wp_ml_character_skill cs);
答案 0 :(得分:2)
您可以在表A和表B之间使用LEFT JOIN
进行此操作,检查表B的NULL
结果,该结果将代表表A中的行,而不是表B中的行。
SELECT A.*
FROM wp_ml_skill_class A
LEFT JOIN wp_ml_character_skill B
ON B.skill_id = A.skill_id
WHERE B.skill_id IS NULL
这是一个演示的小例子:
create table A (id int, val varchar(10));
create table B (id int, val varchar(10));
insert into A values (1, 'a'), (2, 'b'), (3, 'c');
insert into B values (2, 'b');
SELECT *
FROM A
LEFT JOIN B
ON B.id = A.id
WHERE B.id IS NULL
输出:
id val id val
1 a (null) (null)
3 c (null) (null)