这是我的编码和插入表中的值。
CREATE TABLE provendor (
prcode varchar (10),
prvendor varchar (5),
prpricing decimal (9,2)
);
INSERT INTO provendor(prcode, prvendor, prpricing)
VALUES
('PW-1001', 'P10', '500.00'),
('PQ-4570', 'P88', '35.00'),
('MM-120E', 'P67', '245.00'),
('MM-F12WR', 'P10', '1210.00'),
('PW-QZR-09', 'P10', '79.00'),
('PQ-4570', 'P10', '32.50'),
('MM-120E', 'P88', '242.00'),
('PW-1001', 'P45', '550.00'),
('MM-F12WR', 'P73', '1200.00'),
('PQ-4570', 'P67', '33.00'),
('MM-F12WR', 'P35', '1189.00'),
('PW-1001', 'P23', '510.00'),
('PQ-4570', 'P35', '36.00'),
('MM-120E', 'P23', '250.00');
我需要执行查询来检索产品
的产品代码
、定价
和供应商代码
由多个供应商提供,您的记录必须按产品代码排序。
这是我用于自连接的编码
SELECT A.prvendor AS provendor1, B.prvendor AS provendor2, A.prcode
FROM provendor A, provendor B
WHERE prvendor1 > A.prcode
ORDER BY A.prcode;
当我运行它时,错误会提示 prvendor
值不明确。不知道怎么解决
最佳答案
您不能在 where 子句中使用表别名,因此您需要
SELECT A.prvendor AS provendor1, B.prvendor AS provendor2, A.prcode
FROM provendor A, provendor B
WHERE A.prvendor > A.prcode
ORDER BY A.prcode;
但是,您应该使用 ANSI 连接语法,因为这样更容易理解,这通常被视为最佳实践:
SELECT A.prvendor AS provendor1,
B.prvendor AS provendor2,
A.prcode
FROM provendor A
JOIN provendor B
ON A.prvendor > A.prcode
ORDER BY A.prcode;
关于mysql - 很难理解如何使用自连接及其功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52928766/