当前位置:  开发笔记 > 编程语言 > 正文

如何使这个查询更容易编写

如何解决《如何使这个查询更容易编写》经验,为你挑选了1个好方法。

我有一个查询,从一个表中提取问题,从另一个表中提取答案.

SELECT 
  questions.question, 
  questions.answers, 
  (SELECT COUNT(answer) FROM answers WHERE question_id = 1 AND answer = 1 
          GROUP BY answer) as ans1, 
  (SELECT COUNT(answer) FROM answers WHERE question_id = 1 AND answer = 2 
          GROUP BY answer) as ans2 
FROM questions 
WHERE questions.id = 1

虽然这有效但我不喜欢为每个答案添加额外的子查询(questions.answers是一个逗号分隔的潜在答案字符串).它是可行的,但我敢肯定必须有更好的方法.主要的是,不同的问题有不同的答案数量.

有没有更好的方法来做到这一点,或者这是一种可接受的做事方式?我认为查询中的多个子选择将来可能会有(小)性能损失(不是我的性能测试).

如果它适用,我不希望每个问题有超过5个答案.



1> Bill Karwin..:
SELECT q.question, q.answers,
  SUM(a.answer = 1) AS ans1,
  SUM(a.answer = 2) AS ans2
FROM questions q
 LEFT OUTER JOIN answers a ON (q.id = a.question_id)
WHERE q.id = 1
GROUP BY q.id;

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有