MYSQL:操作数应包含1列



我正在尝试按销售金额和日期获取产品订单列表。。。我还想在列表中显示尚未售出的产品,所以我尝试进行子查询,但MYSQL给了我以下消息:

操作数应包含1列

这是我使用的查询:

SELECT product.product_id, product.product_brand_id, product.product_model_id, product.product_subcategory_id, product.product_retail_price, product.product_wholesale_price
FROM product
WHERE product.product_subcategory_id = $subcategory_id 
AND (SELECT SUM(product_sold.product_quantity) AS product_quantity_sold, SUM(product_sold.product_total_price) AS total_price_sold 
 FROM product
 INNER JOIN product_sold 
  ON product.product_id = product_sold.product_id
 INNER JOIN sales 
  ON sales.sales_id = product_sold.product_sales_id WHERE sales.sales_approved = '1' AND sales.sales_approved_time > '$start_timestamp' AND sales.sales_approved_time < '$end_timestamp')

AND运算符希望两边都有一个值,但您得到的是:

WHERE product.product_subcategory_id = $subcategory_id 
AND ( ... select that returns two columns)

第一个操作数的形式为X = Y,因此它是一个布尔值,计算结果为truefalse(如果字段为NULL,则为NULL),但第二个操作数不是布尔值。

要实现这一点,您需要将AND的第二个操作数转换为单值表达式。

最新更新