MySQL查询选择多行
我有下表:MySQL查询选择多行,mysql,select,group-concat,Mysql,Select,Group Concat,我有下表: surveys comp_id question 4 What is your name? 4 How are you? 4 Where do you live? 5 Who are you? 5 What is your birthday? 我需要帮助编写一个查询,该查询提供以下输出: comp_id my_questions 4 What is your na
surveys
comp_id question
4 What is your name?
4 How are you?
4 Where do you live?
5 Who are you?
5 What is your birthday?
我需要帮助编写一个查询,该查询提供以下输出:
comp_id my_questions
4 What is your name?How are you?Where do you live?
5 Who are you?What is your birthday?
谢谢,您正在寻找
GROUP\u CONCAT()
函数。像这样使用它:
SELECT comp_id, GROUP_CONCAT([DISTINCT] question [ORDER BY some_field ASC/DESC] [SEPARATOR '']) as my_questions
FROM surveys
GROUP BY comp_id
注意:我在
[]
中显示了一些要传递到组中的可选值。要获得与您所展示的完全相同的效果,只需使用组\u CONCAT(问题分隔符“”)
。可选项允许您查找不同的问题值,或按任何字段(包括问题本身)对其排序。。但是,为什么要这样“销毁”文本?SQL中是否有一个分组函数可以这样做?@jamis0ngroup\u concat
正是他所需要的@马克B:什么意思?太棒了!学到了一些新东西!感谢mate提供的分隔符:)我正在执行以下查询,但它似乎不起作用:“选择GROUP_CONCAT(问题)作为调查中的问题,其中问题代码=1和问题代码=2”在某些字段上需要一个GROUP BY
子句。事实上,我很惊讶这并没有产生MySQL错误,因为大多数聚合函数在没有GROUP BY
的情况下都会产生MySQL错误。因此,如果我在没有选择comp_id的情况下放置“GROUP BY comp_id”,它会起作用吗?这是因为您没有选择任何记录。记录如何具有question\u code=1
和question\u code=2
。一条记录可以有一个值或另一个值,而不是两个值。您可能需要使用WHERE question\u code IN(1,2)
或WHERE question\u code=1或question\u code=2
。第一种可能是更好的用于动态查询的代码,在动态查询中,您正在筛选的question\u code
的值的数量可能会有所不同。