我正在研究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');
查询检索所有记录:
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)----------
提前感谢您的帮助,非常感谢
试试这个:
SELECT
*
FROM
products
INNER JOIN supplier
ON
supplier.supplier_id = products.supplier_id
WHERE
supplier_name LIKE '%jobs%'
ORDER BY product_id desc;
SQL小提琴
另一件事,避免使用 LIKE
,除非你真的必须这样做(在这种情况下,索引支持的 WHERE 中的附加子句可以加快查询速度)。使用LIKE '%something%'
防止MySQL使用索引(如果你有一个)。
尝试
select * From products p,supplier s where p.supplier_id = s.supplier_id
and s.supplier_name='zukkerburg';