Mysql 从表1中选择不在表2中的列

Mysql 从表1中选择不在表2中的列,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我有两张桌子 table1 ======================================= tid subcategory category --------------------------------------- 1 SUBCATEGORY1 CATEGORY1 2 SUBCATEGORY1 CATEGORY2 3 SUBCATEGORY2 CATEGORY1 4 SUBCATEGORY3 CA

我有两张桌子

table1
=======================================
tid    subcategory     category
---------------------------------------
1      SUBCATEGORY1    CATEGORY1
2      SUBCATEGORY1    CATEGORY2
3      SUBCATEGORY2    CATEGORY1
4      SUBCATEGORY3    CATEGORY1
5      SUBCATEGORY4    CATEGORY1
6      SUBCATEGORY5    CATEGORY1
7      SUBCATEGORY6    CATEGORY1
8      SUBCATEGORY7    CATEGORY1
9      SUBCATEGORY8    CATEGORY1
10     SUBCATEGORY9    CATEGORY1


table2
=======================================
t2id   subcategory     category  pid
---------------------------------------
1      SUBCATEGORY1    CATEGORY1  1
2      SUBCATEGORY1    CATEGORY2  1
3      SUBCATEGORY2    CATEGORY1  1
我试图显示表1中不在表2中的所有行,结果应该是这样的

=======================================
tid    subcategory     category
---------------------------------------
4      SUBCATEGORY3    CATEGORY1
5      SUBCATEGORY4    CATEGORY1
6      SUBCATEGORY5    CATEGORY1
7      SUBCATEGORY6    CATEGORY1
8      SUBCATEGORY7    CATEGORY1
9      SUBCATEGORY8    CATEGORY1
10     SUBCATEGORY9    CATEGORY1
我正在使用此查询

select tl.* from table1 tl where subcategory and category not in(SELECT tl.subcategory, tl.category  FROM table1 as tl join table2 as bm where bm.pid='1' and tl.subcategory=bm.subcategory and tl.category=bm.category);

但它不起作用,请…

我会在这里使用exists逻辑:

SELECT t1.tid, t1.subcategory, t1.category
FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2
                  WHERE t2.pim = 1 AND
                        t2.subcategory = t1.subcategory AND t2.category = t1.category);

您能在这里告诉我SELECT 1的含义吗
SELECT 1
只返回一个记录,其中一列的值为1,但这里的逻辑是检查
WHERE
子句中是否存在条件。有关语法的详细信息,请阅读关于exists。