php / mysql,如果行的总和为零,如何隐藏行?

时间:2016-03-20 10:30:38

标签: mysql sql sum

我有下面的代码,可以计算行的总和,但是现在我想隐藏行,如果行的总和为零,怎么办?

SELECT * , 
  Client.client_chi_name, 
  Client.client_eng_name, 
  SUM( shares_no ) AS sub_shares,
  (select sum(shares_no) FROM Shareholder
      LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
      WHERE Shareholder.com_no = '2040628') as total_shares
FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628'
GROUP BY Shareholder.client_id
ORDER BY sub_shares DESC,
Shareholder.date_of_register DESC

picture to hide zero rows

非常感谢你的帮助和帮助。提前支持!

2 个答案:

答案 0 :(得分:0)

只需使用HAVING clause

即可

假设您必须过滤掉零的total_shares

.
.
GROUP BY Shareholder.client_id
HAVING total_shares > 0
ORDER BY sub_shares DESC,
.
.

答案 1 :(得分:0)

如果可以使用'有'你应该使用它。这是更好的方式

。 。 通过...分组 ... 拥有total_shares> 0 。

但是既然你问这么简单的问题,我认为你在SQL方面不是很强大。所以,你总是可以使用' where'条款。它会慢下来然后拥有并且它不是一个好的方法,但它肯定会起作用

   select * from
(SELECT * , 
  Client.client_chi_name, 
  Client.client_eng_name, 
  SUM( shares_no ) AS sub_shares,
  (select sum(shares_no) FROM Shareholder
      LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
      WHERE Shareholder.com_no = '2040628') as total_shares
FROM Shareholder
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id
WHERE Shareholder.com_no = '2040628'
GROUP BY Shareholder.client_id
ORDER BY sub_shares DESC,
Shareholder.date_of_register DESC
)
where shares_no >0