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

时间:2013-10-04 10:44:50

标签: php mysql sql sql-server

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

以下是sqlfiddle

的演示

SQL CODE:

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');

查询检索所有记录:

SELECT *,(SELECT supplier_name FROM supplier WHERE supplier_id = products.supplier_id) AS supplier_name FROM products ORDER BY product_id DESC

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

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  

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

-------------HERE YOUR SQL QUERY (ANSWER)----------

提前感谢您的帮助,非常感谢

2 个答案:

答案 0 :(得分:5)

试试这个:

SELECT 
  *
FROM
  products
INNER JOIN supplier
ON
supplier.supplier_id = products.supplier_id
WHERE
  supplier_name LIKE '%jobs%'
ORDER BY product_id desc;

SQL fiddle

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

答案 1 :(得分:4)

尝试

select * From products p,supplier s where p.supplier_id = s.supplier_id
and s.supplier_name='zukkerburg';