SELECT * FROM 客户表 WHERE
(SELECT 客户编号 FROM 订单主表 WHERE
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')) GROUP BY 客户编号
上面语句,要求查询订购了“旺旺雪饼”的所有客户的信息,我的思路是,由旺旺雪饼得到订单编号,由订单编号得到客户编号,由客户编号查询客户信息为什么报错:
“在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式”
(SELECT 客户编号 FROM 订单主表 WHERE
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')) GROUP BY 客户编号
上面语句,要求查询订购了“旺旺雪饼”的所有客户的信息,我的思路是,由旺旺雪饼得到订单编号,由订单编号得到客户编号,由客户编号查询客户信息为什么报错:
“在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式”
left join 订单主表 on 客户表.客户编号=订单主表.客户编号
left join 订单明细表 on 订单主表.订单编号=订单主表.订单编号
where 订单明细表.商品名称='旺旺雪饼'
group by 客户编号
(SELECT 客户编号 FROM 订单主表 WHERE 订单编号 IN
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')) GROUP BY 客户编号
--try
SELECT *
FROM 客户表 A
LEFT JOIN
订单主表 B ON B.客户编号=A.客户编号
LEFT JOIN
订单明细表 C ON B.订单编号=C.订单编号
WHERE
C.商品名称='旺旺雪饼'GROUP BY A.客户编号
SELECT * FROM 客户表 WHERE --此处要指定 '客户编号 in'
(SELECT 客户编号 FROM 订单主表 WHERE --此处要指定'订单编号 IN'
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')) GROUP BY 客户编号--你缺少了指定,默认指定了非布尔类型的表达式,导致查询报错
(SELECT 客户编号 FROM 订单主表 WHERE 订单编号 IN --此处要指定'订单编号 IN'
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')) GROUP BY 客户编号
(SELECT 客户编号 FROM 订单主表 WHERE
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')a )b GROUP BY 客户编号
SELECT * FROM 客户表 WHERE
(
SELECT 客户编号 FROM 订单主表 WHERE
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼') AS a
) AS b
GROUP BY 客户编号
这种嵌套查询需要使用别名,as可以省略哈
(SELECT 客户编号 FROM 订单主表 WHERE 订单编号 in
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')
) GROUP BY 客户编号in后面的子查询,是不能带别名的
客户编号 in
(SELECT 客户编号 FROM 订单主表 WHERE
订单编号 in (
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼'
)
)
GROUP BY 客户编号
嵌套要这么写