我试图基于表B
选择表A
中不存在的行。
与表B
不同,表A
在titleid的末尾具有“ _00”,并且该列称为title
而不是titleid
。
表A :
id | titleid
---+----------
1 | TEST1_00
2 | TEST2_00
3 | TEST3_00
4 | TEST4_00
表B :
id | title
---+-------
1 | TEST1
2 | TEST2
我目前有:
SELECT `t1.titleid`
FROM `tableb t1`
LEFT JOIN `tablea t2` ON `t2.title + '_00' = t1.titleid`
WHERE `t2.title` IS NULL
如何选择A
中存在的值,而不是B
中存在的值?
所需的输出
id | title
---+----------
3 | TEST3_00
4 | TEST4_00
答案 0 :(得分:1)
SELECT t1.titleid
FROM tablea t1
LEFT JOIN tableb t2 ON t2.title + '_00' = t1.titleid
WHERE t2.title IS NULL
您要从Table A
提取数据,在left join
上进行Table B
并提取数据where TableB.Title is null
。
您的查询正在尝试提取数据where TableA.Title is NULL
。
答案 1 :(得分:1)
如果需要LEFT JOIN
tableb
tablea
SELECT `t1.titleid`
FROM `tablea t1`
LEFT JOIN `tableb t2` ON `t1.titleid = t2.title+ '_00'`
WHERE `t2.title` IS NULL
这将显示tablea
中的哪些记录在tableb
中没有匹配项,并且是null
答案 2 :(得分:0)
可以这样做
SELECT `t1.titleid`
FROM `tablea t1`
WHERE
NOT EXISTS (SELECT t2.title FROM `tableb t2` WHERE `t1.titleid = t2.title+ '_00'`)
答案 3 :(得分:0)
select * from A where SUBSTRING(A.title,0, 6) in (select B.title from B )