我正在研究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)----------
提前感谢您的帮助,非常感谢
答案 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;
另一件事,避免使用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';