Mysql:显示不包含来自另一个表的文本模式的查询结果

时间:2015-10-30 10:42:15

标签: mysql sql

仅当产品名称中未显示表格中的文本模式时,才尝试显示查询结果。

+-----------------------------------------+          +--------+
|             Product Name                |          |pattern |
+-----------------------------------------+          +--------+
|Gangster Barbie with guns & accessories  |          |  Gun   |
|Very Safe Playdoh                        |          |  Drug  |          
|Star Wars Lego                           |          |  nam   |
|Transformers Decepticon Druglord         |          |        |
|GTA: Namcat Version                      |          |        |
+-----------------------------------------+          +--------+

想得到结果:

+-----------------------------------------+
|             Product Name                |
+-----------------------------------------+
|Very Safe Playdoh                        |
|Star Wars Lego                           |
+-----------------------------------------+

我尝试过LIKE或INSTR,例如:

select `Product_Name` 
from Product_table 
where NOT LIKE '%'+(select `text_pattern`.`Keywords` from `text_pattern`)+'%';

但似乎没有一个正常工作。有人可以帮忙或指出正确的方向吗?

2 个答案:

答案 0 :(得分:1)

以下是使用not exists的一种方法:

select p.*
from product p
where not exists (select 1
                  from patterns pat
                  where p.name like concat('%', pat.pattern, '%')
                 );

注意:MySQL不使用+进行字符串连接。它使用concat()函数。

答案 1 :(得分:0)

E.g.

DROP TABLE IF EXISTS product;

CREATE TABLE product
(name                VARCHAR(50) NOT NULL PRIMARY KEY);

INSERT INTO product VALUES
('Gangster Barbie with guns & accessories'),
('Very Safe Playdoh'),
('Star Wars Lego'),
('Transformers Decepticon Druglord'),
('GTA: Namcat Version');

DROP TABLE IF EXISTS patterns;

CREATE TABLE patterns
(pattern VARCHAR(12) PRIMARY KEY);

INSERT INTO patterns VALUES
('Gun'),('Drug'),('nam');

SELECT * FROM product a LEFT JOIN patterns b ON a.name LIKE CONCAT('%',b.pattern,'%');
+-----------------------------------------+---------+
| name                                    | pattern |
+-----------------------------------------+---------+
| Gangster Barbie with guns & accessories | Gun     |
| GTA: Namcat Version                     | nam     |
| Star Wars Lego                          | NULL    |
| Transformers Decepticon Druglord        | Drug    |
| Very Safe Playdoh                       | NULL    |
+-----------------------------------------+---------+