我在Mysql中有两个表,一个是我需要向用户显示的所有数据,另一个是简单列出已删除项目的URL的列表。Mysql - 验证是否在另一个表中存在结果的一部分
我想要做的是选择所有的结果,只要该元素不存在于“已删除的项目”表中。
在我的“Deleted_Items”的表我有类型的URL列表
https://example.com/video/123456/
但在我的表“项目”的网址列包含以下内容:
https://example.com/video/123456/dogs_and_cats/
我会需要做的是这样的(伪):
SELECT id, url, thumb FROM Items
WHERE Items.url NOT CONTAINS Deleted_Items.url
PS: 我有一个类C ASE与其他两个表,但不同的是,在“项目”表我的ID,并在“Deleted_Items”表我也有ID的列表清单,所以我申请以下查询:
SELECT id, url, thumb
FROM Items
LEFT OUTER JOIN Deleted_Items
ON (Items.url = Deleted_Items.url)
WHERE Deleted_Items.url IS NULL
LIMIT 30
使用相同的反连接图案与“ID列表”查询。似乎匹配条件(在ON子句中)就像这样:ON items.url LIKE CONCAT('%',deleted_items.url,'%')'。 (LIKE比较的潜在问题是'_'和'%'通配符。)'LIKE'比较的替代方法是正则表达式比较'REGEXP'(带有特殊字符的更复杂的规则),或者使用' INSTR()'或'LOCATE()'函数。 – spencer7593