此查询用于计算总和 p_quantity <= 21000
对于 p_description
.该查询有效,但是当您添加 ORDER BY p_reference
时显示所有行
我尝试添加 ORDER BY
像这样:
SET @runtot:=0;
SELECT p_id, p_description, (@runtot := @runtot + p_quantity) AS runningTotal
FROM product_table
WHERE @runtot + p_quantity <= 21000 AND p_description = 'product_1' ORDER BY p_reference ASC
这是创建产品表的代码:
CREATE TABLE IF NOT EXISTS `product_table` (
`p_id` int(11) PRIMARY KEY AUTO_INCREMENT NOT NULL,
`p_description` varchar(50) NOT NULL,
`p_reference` varchar(25) NOT NULL,
`p_location` varchar(25) NOT NULL,
`p_quantity` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `product_table` (`p_id`, `p_description`, `p_reference`, `p_location`, `p_quantity`) VALUES
(1, 'Product_1', '1A00001', 'AP07', 7000),
(2, 'Product_1', '1A00001', 'AF05', 6000),
(3, 'Product_1', '1A00233', 'DS07', 7000),
(4, 'Product_1', '1A00233', 'SD10', 5000),
(5, 'Product_1', '1A00001', 'YB12', 7000),
(6, 'Product_1', '1A00001', 'AN01', 7000),
(7, 'Product_1', '1A00001', 'AP04', 7000),
(8, 'Product_1', '1A00245', 'AP01', 7000),
(9, 'Product_1', '1A00001', 'QD01', 7000),
(10, 'Product_1', '1A00001', 'SC01', 7000);
最佳答案
因为您没有在查询中选择p_reference
。试试看,
SET @runtot:=0;
SELECT p_id, p_description, **p_reference**, (@runtot := @runtot + p_quantity) AS runningTotal
FROM product_table
WHERE @runtot + p_quantity <= 21000 AND p_description = 'product_1'
ORDER BY p_reference ASC;
关于mysql - 如何使用变量 SET 在 MySQL 中使用 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27335294/