繁体   English   中英

选择所有列数据但列上不同

[英]Select all column data but distinct on column

SELECT * DISTINCT `contact_id`  
 FROM `survey_response_single`  
  WHERE text_id = '1' LIMIT 0, 15 

我将要使用不同的查询来获取所有列数据

首先,看起来他想访问所有列。 因此,在使用DISTINCT时,必须指定所有列,但是您不能使用*

但是,如果我们使用GROUP BY,则可以解决此问题。 与在GROUP BY中一样,您将仅获得contact_id不同值,因为相似值将被分组。 而且,现在我们可以使用*访问所有列

SELECT * FROM `survey_response_single`  
WHERE text_id = '1' 
GROUP BY `contact_id`

请尝试以下任何一种,具体取决于所需的输出:

SELECT DISTINCT contact_id, text_id, details  -- take your column names
FROM survey_response_single  
WHERE text_id = '1' LIMIT 0, 15 

http://sqlfiddle.com/#!2/3d502/4

或此(如果您只希望单列的不同值):

SELECT DISTINCT contact_id
FROM survey_response_single  
WHERE text_id = '1' LIMIT 0, 15 

http://sqlfiddle.com/#!2/3d502/6

随和:

SELECT DISTINCT `contact_id`, *
FROM `survey_response_single`
WHERE `text_id` = '1' LIMIT 0, 15

很多人不知道的是:*不必是SELECT中的唯一语句。 您可以轻松地用逗号分隔它并获取更多列。

您可以在目标列上调用DISTINCT,也可以使用星号获取所有其他列。

唯一的副作用是您的结果表将包含两个具有相同内容的“ contact_id”列。 但是,使用PHP提取数组时,您无需担心别名,这两种方式都可以工作。

如果要查询没有重复数据的查询,别无选择,只能自己列出表格的所有列,而不要使用*

$query=mysql_query("SELECT DISTINCT `contact_id`,column1,
column2 FROM `survey_response_single`
WHERE text_id = '1' LIMIT 0, 15  "); //You select here the required data 
//of column1,2... and having distinct contact_id values
$execute_query=mysql_query($query,$db_conn);
while($row=mysql_fetch_array($execute_query){
  //use you data
}
SELECT DISTINCT `contact_id`  
 FROM `survey_response_single`  
  WHERE text_id = '1' LIMIT 0, 15 

不需要星号(*)

SELECT  DISTINCT `contact_id`  
 FROM `survey_response_single`  
  WHERE text_id = '1' LIMIT 0, 15 

删除*号

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM