2

我正在访问一个名称与公司相关的数据库。名称在表中是唯一的。可以有多个人拥有同一家公司。如果重复,我只需要返回公司的ONCE实例,以便我可以根据公司显示信息。我的代码如下:

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company');

那显然行不通,我不想指定个别公司。我只想能够返回数据库中所有公司的列表。如果有多个条目具有相同的公司名称,只需返回其中一个。

编辑 我选择的答案是正确的,但我最终选择的答案是m.buettner's answer。

4

3 回答 3

2

我会在评论中要求澄清,但我缺少代表,对不起。如果每家公司只需要一行,那么其他列是什么甚至重要吗?或者你真的只是想找出所有公司的名单吗?

对于后者,这应该这样做:

$result = $pdo->query('SELECT DISTINCT company FROM vendoreducation;');

当然,您还可以包含对于同一公司的所有行都相同的任何列。但是,由于某些列可能具有不同的值(例如您提到的名称),使用DISTINCTwith*可能只会再次为您提供所有行。

编辑:如果您确实希望每家公司有一整行,您可以简单地使用上面一行检索到的所有公司的列表,然后依次对每家公司使用解决方案,为每家公司查询一行LIMIT 1。但也许你应该考虑规范化,如果这是一个选项(即如果你可以改变数据库)。

于 2012-09-20T20:50:50.513 回答
0

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company LIMIT 1');

或者

$result = $pdo->query('SELECT distinct * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company');

于 2012-09-20T20:41:47.163 回答
0

利用DISTINCT

$result = $pdo->query('SELECT DISTINCT * FROM vendoreducation WHERE company LIKE "TestCompany"');
于 2012-09-20T20:36:26.093 回答