J'ai deux tables dans Mysql, l'une est toutes les données que j'ai besoin d'afficher aux utilisateurs et une autre simplement une liste d'URL des éléments qui ont été supprimés.Mysql - Vérifier si une partie d'un résultat existe dans une autre table
Ce que je veux faire est de sélectionner tous les résultats tant que l'élément n'existe pas dans la table "éléments supprimés".
Dans ma table de "Deleted_Items" J'ai une liste d'URL de type
https://example.com/video/123456/
Mais dans ma table "Articles" la colonne URL contient les éléments suivants:
https://example.com/video/123456/dogs_and_cats/
Je voudrais besoin de faire quelque chose comme ça (pseudo-code):
SELECT id, url, thumb FROM Items
WHERE Items.url NOT CONTAINS Deleted_Items.url
PS: Je eu un même c ase avec deux autres tables, mais la différence est que dans la « Articles » table, j'avais une liste d'ID et dans la « Deleted_Items » tableau que j'avais aussi une liste d'identifiants, donc j'appliqué la requête suivante:
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
Utilisez le même modèle anti-rejoindre comme le Requête "liste d'ID". On dirait que la condition correspondante (dans la clause ON) serait quelque chose comme ceci 'ON items.url LIKE CONCAT ('%', deleted_items.url, '%')'. (Les getchas potentiels avec la comparaison LIKE sont les caractères génériques '_' et'% '.) Une comparaison avec' LIKE' serait une comparaison d'expression régulière 'REGEXP' (avec des règles encore plus complexes avec des caractères spéciaux), ou utiliser' INSTR() 'ou' LOCATE() 'fonctions. – spencer7593