MYSQL根据返回的行检索数据

MYSQL根据返回的行检索数据,mysql,case-expression,Mysql,Case Expression,我正在处理一个mysql查询,它将根据返回的行数过滤掉某些事件 当返回的行数为1时,我试图过滤掉任何支持类别,但是当结果集大于1时,请保留支持类别 我最初有这个想法,但它似乎不会起作用 SELECT stockmaster.description, SUM(salesorderdetails.quantity), stockmaster.categoryid as qty FROM salesorderdetails, stockmaster where salesorder

我正在处理一个mysql查询,它将根据返回的行数过滤掉某些事件

当返回的行数为1时,我试图过滤掉任何支持类别,但是当结果集大于1时,请保留支持类别

我最初有这个想法,但它似乎不会起作用

SELECT stockmaster.description, SUM(salesorderdetails.quantity), stockmaster.categoryid         as qty 
FROM salesorderdetails, stockmaster 
where salesorderdetails.stkcode=stockmaster.stockid 
and orderno='5222'
group by stockmaster.description
HAVING CASE WHEN stockmaster.categoryid = 'S&M' THEN COUNT(*) >= 2 ELSE COUNT(*) = 1   END
任何帮助都将被感激地接受。

试试这个

SELECT *
FROM
(

SELECT stockmaster.description, 
       SUM(salesorderdetails.quantity), 
       stockmaster.categoryid         as qty ,
       COUNT(*) AS count
FROM salesorderdetails, stockmaster 
where salesorderdetails.stkcode=stockmaster.stockid 
and orderno='5222'
group by stockmaster.description
HAVING CASE WHEN stockmaster.categoryid = 'S&M' 

) MAIN_DATA

WHERE MAIN_DATA.count >1
提供一些简单的数据和预期的结果