仅从重复行返回一行

时间:2012-09-20 20:34:40

标签: php mysql

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

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

这显然不起作用,我不想指定个别公司。我只是想能够返回数据库中所有公司的列表。如果有多个条目具有相同的公司名称,则只返回其中一个。

修改 我选择的答案是正确的方向,但我最终得到的答案是m.buettner的回答。

3 个答案:

答案 0 :(得分:2)

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

对于后者,这应该做:

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

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

编辑:如果您想要为每家公司提供一整行,您只需使用上述行检索到的所有公司的列表,然后使用{{查询每一家公司的一行1}}依次解决每个公司的问题。但也许你应该考虑normalization,如果这是一个选项(即如果你可以改变数据库)。

答案 1 :(得分:0)

使用DISTINCT

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

答案 2 :(得分:0)

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

OR

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