使用内部选择查询进行MySQL搜索

Dha*_*dva 1 php mysql sql sql-server

我正在研究MySQL,我有点陷入困境.我想触发搜索查询以从数据库表中检索匹配记录.一切正常,但当我要搜索记录时,我使用内部选择检索它将不会是搜索.我不知道如何解雇查询.

这是我的sqlfiddle演示

SQL代码:

CREATE TABLE supplier 
(
 supplier_id int auto_increment primary key, 
 supplier_name varchar(20) 
);

INSERT INTO supplier
(supplier_name)
VALUES
('billgate'),
('jobs'),
('zukkerburg');

CREATE TABLE products 
(
 product_id int auto_increment primary key, 
 supplier_id int,
 product_name varchar(20) 
);

INSERT INTO products
(supplier_id,product_name)
VALUES
('1','microsoft'),
('2','apple'),
('3','facebook');
Run Code Online (Sandbox Code Playgroud)

查询检索所有记录:

SELECT *,(SELECT supplier_name FROM supplier WHERE supplier_id = products.supplier_id) AS supplier_name FROM products ORDER BY product_id DESC
Run Code Online (Sandbox Code Playgroud)

在上面的演示中如果我触发查询如下,它将给出正确的结果.

SELECT *,(SELECT supplier_name from supplier where supplier_id = products.supplier_id) as supplier_name FROM products WHERE product_name LIKE '%facebook%' ORDER BY product_id desc  
Run Code Online (Sandbox Code Playgroud)

但我想从列表中搜索supplier_name然后我该如何实现这一目标?

-------------HERE YOUR SQL QUERY (ANSWER)----------
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助,非常感谢

Zag*_*r23 5

试试这个:

SELECT 
  *
FROM
  products
INNER JOIN supplier
ON
supplier.supplier_id = products.supplier_id
WHERE
  supplier_name LIKE '%jobs%'
ORDER BY product_id desc;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

另一件事,LIKE除非你真的必须避免使用(在这种情况下,索引支持的WHERE中的附加子句可以加速查询).使用LIKE '%something%' 阻止MySQL使用索引(如果你有一个).