gpt4 book ai didi

MySQL 使用反连接来选择两个表之间的非重复值

转载 作者:行者123 更新时间:2023-11-29 06:40:00 25 4
gpt4 key购买 nike

我试图根据表 B 中的值从表 A 中选择值。但是,我不知道要使用什么。

目标:

  • 我网站上的用户从网页上的表 A 中获取了完整的复选框列表。
  • 然后用户选择一个复选框,该复选框的值为插入表B。
  • 在某个时间点,用户返回到该网页,只能看到未插入表 B 中的复选框。

在数据库术语中,我将使用一个选择查询来比较表 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);

最佳答案

您可以在表 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)

关于MySQL 使用反连接来选择两个表之间的非重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com