mysql使用group by返回多个结果

时间:2011-06-02 04:23:00

标签: mysql

请注意这是关于作业问题,功课完成并符合规范,但它很慢,所以我试图减少我拨打多少次SQL调用。我还在学习SQL-fu。

我的表格如下:

Ticker |Name                  |Industry
A      |Agilent Technologies  |Information Technology
AA     |Alcoa Inc             |Materials
AAPL   |Apple Inc.            |Information Technology

现在我正在循环中运行这样的SQL语句。每次迭代我都会改变哪个行业。

SELECT ticker FROM company WHERE industry = 'Information Technology'

但这意味着我必须为每个行业调用数据库,以获取与之相关的代码。我想要的是进行一次返回多个结果的数据库调用。因此,第一个结果将是第一个行业的所有代码清单,第二个结果将是第二个行业的所有代码等。

我试过这个SQL,但它只给了我一个行业的代码,而不是一个完整的列表

SELECT ticker, industry FROM company GROUP BY industry

2 个答案:

答案 0 :(得分:7)

这应该适合你:

SELECT GROUP_CONCAT(Ticker) as Tickers, industry FROM company GROUP BY industry

答案 1 :(得分:1)

不幸的是,如果您需要为每个行业提供单独的结果集,那么您可能是最好的方法。但是,如果您想在代码中进行一些操作,则可以返回行业订购的整个表格,然后返回自动收报机。然后在您的代码中,您可以阅读,直到行业发生变化,然后做您想要的任何魔术,然后再读一遍,直到行业再次发生变化。基本上,在结果集上进行循环,而不是使用循环来进行数据库调用。如果你这样做,你的查询将如下所示:

SELECT ticker
FROM company
ORDER BY Industry, Ticker

您将对数据库进行一次调用,并在代码中(或在您处理数据的任何地方)循环遍历结果。