Mysql 如何对同一列SQL多次使用SELECT查询

Mysql 如何对同一列SQL多次使用SELECT查询,mysql,sql,select,Mysql,Sql,Select,我试图根据交叉表信息生成两列。具体来说,我试图选择在讨论论坛中提问的学生,将他们放入提问者栏,选择回答问题的学生,将他们放入回答者栏。这些查询单独工作,但当我用逗号将它们连接起来时,会出现以下语法错误: SELECT author_id AS questioner WHERE post_type='question', group_concat(DISTINCT author_id SEPARATOR " ") AS answerers WHERE post_type='answer' FROM

我试图根据交叉表信息生成两列。具体来说,我试图选择在讨论论坛中提问的学生,将他们放入提问者栏,选择回答问题的学生,将他们放入回答者栏。这些查询单独工作,但当我用逗号将它们连接起来时,会出现以下语法错误:

SELECT author_id AS questioner
WHERE post_type='question',
group_concat(DISTINCT author_id SEPARATOR " ") AS answerers
WHERE post_type='answer'
FROM students;
语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
group_concat(DISTINCT author_id SEPARATOR " ") AS answerers
FROM students
WHERE' at line 12

我怎样才能得到一列提问的人和一列回答问题的人?我假设错误来自对SELECT语法的误解。

我不明白您为什么要首先发出两个无论如何都不允许的命令。如果要在一个查询中获得两个选择,可以执行以下未测试的查询:

SELECT author_id, post_type AS questioner
FROM students
WHERE post_type='question' OR post_type='answer';

如果需要在一条语句中执行两个查询,则需要使用子查询:

我不明白为什么要首先发出两个无论如何都不允许的查询。如果要在一个查询中获得两个选择,可以执行以下未测试的查询:

SELECT author_id, post_type AS questioner
FROM students
WHERE post_type='question' OR post_type='answer';

如果您需要在一条语句中执行两个查询,则需要使用子查询:

我知道这在SQL server中有效,但您可以在MySQL中尝试

SELECT a.author_id AS questioner, b.author_id AS answerers
FROM students a, students b
WHERE a.post_type='question'
AND b.post_type='answer'

我知道这在SQL server中有效,但您可以在MySQL中尝试

SELECT a.author_id AS questioner, b.author_id AS answerers
FROM students a, students b
WHERE a.post_type='question'
AND b.post_type='answer'

试试这个,我想这正是你想要的:

SELECT
  s1.author_id AS questioner,
  (SELECT group_concat(DISTINCT author_id SEPARATOR " ") FROM students s2 WHERE s2.post_type = 'answer' AND s2.thread_id = s1.thread_id) AS answerers
FROM
  students s1
WHERE
  s1.post_type = 'question'

试试这个,我想这正是你想要的:

SELECT
  s1.author_id AS questioner,
  (SELECT group_concat(DISTINCT author_id SEPARATOR " ") FROM students s2 WHERE s2.post_type = 'answer' AND s2.thread_id = s1.thread_id) AS answerers
FROM
  students s1
WHERE
  s1.post_type = 'question'


这一行的问题和答案之间的关系是什么?每一行都是学生发的帖子。它被分类为问题、答案或评论。您能举例说明您希望从查询中得到什么样的结果吗?这不是很清楚,我希望答案栏中有回答给定问题的学生,问题栏中有提问开始于一条线索的学生。只需给出一行的示例问题和答案之间的关系是什么?每一行都是学生发表的帖子。它被分类为问题、答案或评论。您能举例说明您希望从查询中得到什么样的结果吗?这不是很清楚,我希望答案栏里有回答给定问题的学生,问题栏里有提问开始的学生。举一个例子,这不取决于我有两个不同的表格:a和b吗?不,a和b只是来自同一桌学生的不同别名这难道不取决于我有两个不同的桌子:a和b吗?不,a和b只是来自同一桌学生的不同别名。很好,它起作用了。你能解释一下s1和s2是什么吗?如果你想继续问其他问题,不要觉得有义务问。它们只是表格的别名,这样我们就可以互相联系。这与将列别名为as时的原理相同:因此,我们正在为每个问题执行子查询,并将其连接到线程id上。希望这能回答您的问题:@goldisfine这是顺便说一句。我在为你发布的链接中解释了这一点:-D就从你的问题来看,我很难理解你到底想要实现什么,最后最好是你自己构建查询,以防你以后想要更改它们……天哪,这是成功的。你能解释一下s1和s2是什么吗?如果你想继续问其他问题,不要觉得有义务问。它们只是表格的别名,这样我们就可以互相联系。这与将列别名为as时的原理相同:因此,我们正在为每个问题执行子查询,并将其连接到线程id上。希望这能回答您的问题:@goldisfine这是顺便说一句。我在为你发布的链接中解释了这一点:-D就从你的问题来看,我很难理解你到底想要实现什么,最后最好是你自己构建查询,以防你以后想更改它们。。。