小编Chr*_*ong的帖子

在 MySQL 中将单列与多个值匹配而无需自联接表

我们有一个表,用于存储问题的答案。我们需要能够找到对特定问题有特定答案的用户。因此,如果我们的表包含以下数据:

user_id     question_id     answer_value  
Sally        1               Pooch  
Sally        2               Peach  
John         1               Pooch  
John         2               Duke
Run Code Online (Sandbox Code Playgroud)

并且我们想要找到回答问题 1 的“Pooch”和回答问题 2 的“Peach”的用户,以下 SQL 将(显然)不起作用:

select user_id 
from answers 
where question_id=1 
  and answer_value = 'Pooch'
  and question_id=2
  and answer_value='Peach'
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是为我们正在寻找的每个答案自行加入表格:

select a.user_id 
from answers a, answers b 
where a.user_id = b.user_id
  and a.question_id=1
  and a.answer_value = 'Pooch'
  and b.question_id=2
  and b.answer_value='Peach'
Run Code Online (Sandbox Code Playgroud)

这是有效的,但由于我们允许任意数量的搜索过滤器,我们需要找到更有效的东西。我的下一个解决方案是这样的:

select user_id, count(question_id) 
from answers 
where (
       (question_id=2 and answer_value = 'Peach') 
    or (question_id=1 and answer_value = 'Pooch')
      )
group …
Run Code Online (Sandbox Code Playgroud)

mysql join database-design

14
推荐指数
3
解决办法
13万
查看次数

MySQL:为什么 auto_increment 仅限于主键?

我知道 MySQL 将 auto_increment 列限制为主键。为什么是这样?我的第一个想法是这是一个性能限制,因为某处可能有一些计数器表必须锁定才能获得此值。

为什么我不能在同一个表中有多个 auto_increment 列?

谢谢。

mysql primary-key auto-increment

10
推荐指数
3
解决办法
3万
查看次数