数据库查询-我有一个两个表a和B.我只能从中获取数据



我有一个两个表a和B。我必须只从与B表不匹配的a表中获取数据(意味着从两个表中都获取不常见的数据)。但输出应该只来自表a。

表值A
1、2、3、4、5、6

表值B
1,2,7,8,9,0


输出应低于上述数据

34.5.6

试试这个,可能对你有用;)

select *
from tablea a
where not exists(select 1 from tableb b where a.value = b.value)

SQL Fiddle

MySQL 5.6架构:

CREATE TABLE IF NOT EXISTS `tablea` (
  `value` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tablea` (`value`) VALUES
    (1),
    (2),
    (3),
    (4),
    (5),
    (6);
CREATE TABLE IF NOT EXISTS `tableb` (
  `value` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
INSERT INTO `tableb` (`value`) VALUES
    (1),
    (2),
    (7),
    (8),
    (9),
    (0);

查询1

select *
from tablea a
where not exists(select 1 from tableb b where a.value = b.value)

结果

| value |
|-------|
|     3 |
|     4 |
|     5 |
|     6 |

您可以使用NOT IN

SELECT *
FROM TableA
WHERE _value NOT IN 
(SELECT _value FROM TableB)

您可以使用JOIN来获得所需的结果。

LEFT JOIN关键字返回左表(表1)中的所有行,匹配的行在右表(表2)中。当没有匹配项时,右侧的结果为NULL。

select a.value
from tablea a
left join tableb b on a.value = b.value where b.value is null;

SQL Fiddle

结果

| value |
|-------|
|     3 |
|     4 |
|     5 |
|     6 |