2016-12-14 114 views
2

我有一个包含大量列的表,我想选择所有列,但我希望这些列中的唯一一列。如何从一个表中选择所有列但具有唯一的一列

这对我的作品,但我不明白的所有列:

$result = mysql_query("SELECT DISTINCT company FROM table t $order"); 

我还测试了这一点,但什么都不做:

$result = mysql_query("SELECT * DISTINCT company FROM table t $order"); 


$result = mysql_query("SELECT DISTINCT company * FROM table t $order"); 

编辑

我的表有很多专栏让我们说它有5个,所以我的记录的一个例子是这样的:

company x  y  price numOfEmpl 
one  1  5  1.3  15 
one  2  6  1.4  15 
two  3  7  1.5  16 
three  4  8  1.6  17 

所以我想削减第二行,并采取所有其他。

+2

你看了GROUP BY – RiggsFolly

+0

@RiggsFolly其实我不知道它是如何与群组合作的 –

+0

然后[这里是你需要开始你的研究的地方](https://dev.mysql.com/doc /refman/5.7/en/group-by-handling.html) – RiggsFolly

回答

0

编辑以前的答案基于额外信息

已经为您解决在MySQL和SQL Server,如果你需要它

的MySQL实例(使用用户变量/子查询)

CREATE TABLE SomeTable (company VARCHAR(20), x INT, y INT, price FLOAT, numOfEmploy INT); 

INSERT INTO SomeTable 
(company, x, y, price, numOfEmploy) 
VALUES 
('one', 1, 5, 1.3, 15), 
('one', 1, 6, 1.4, 15), 
('two', 1, 7, 1.5, 16), 
('three', 1, 8, 1.6, 17); 

SET @count = NULL, @value = NULL; 
SELECT company, x, y, price, numOfEmploy FROM (
    SELECT 
     company, x, y, price, numOfEmploy, 
     @count := IF(@value = company, @count + 1, 1) AS rc, 
     @value := company 
    FROM SomeTable 
) AS grouped_companies WHERE rc = 1 

SQL Server的实施例(使用CTE)

--Create the table 
declare @sometable table (company varchar(10), x int, y int, price float, numOfEmploy int) 

--insert the data 
insert into @sometable values ('one', 1, 5, 1.3, 15) 
insert into @sometable values ('one', 2, 6, 1.4, 15) 
insert into @sometable values ('two', 3, 7, 1.5, 16) 
insert into @sometable values ('three', 4, 8, 1.6, 17) 

--WITH Common Table Expression 
;WITH grouped_companies AS (
     SELECT *, 
     ROW_NUMBER() OVER(PARTITION BY company 
          ORDER BY company) AS rc 
     FROM @sometable) 
SELECT gc.company, gc.x, gc.y, gc.price, gc.numOfEmploy 
FROM grouped_companies gc 
WHERE gc.rc = 1 
+0

感谢您的回答,我应该把什么内容加起来? (如果我想要所有其他列) –

+0

在我的示例中,SUM()会将每个公司的所有订单总计加在一起。 –

+0

好吧,如果我想采取所有记录,但削减重复我该怎么办? –

0

DISTINCT关键字可用来定义的列内仅返回不同(不同的)的值,像

SELECT DISTINCT column_name,column_name 

,或者您可以通过

SELECT COUNT(DISTINCT column_name) 

See some samples on W3Schools返回不同值的量

我想你可能需要使用单独的sql query所有记录

相关问题