我的查询错误是什么?

时间:2016-07-21 07:36:21

标签: sql nested-queries

我正在开发一个我所在的数据训练营的项目,我正在使用三个表。在这些表中,我试图找到有关此数据集中用户的更多信息。我想回答的一些问题是......

  1. 有多少用户在日常生活中使用多个浏览器?
  2. 除了firefox之外,最流行的浏览器是什么?
  3. 使用多个浏览器的用户中最常用的浏览器是什么?
  4. 附件是我的表的概述(忽略废话代码) data set and tables 这是我遇到问题的查询:

    select user_id, q2, q3, q4
    from survey
    where q2 = '0' or '1' and q3 = '0' or '1' or '2' or '3' and q4 = '0' or '1' or '2' or '3' or '4' or '5'
    

    我想拉出q2,q3,q4的命名值。如何正确写入以便将数据拉入一组?我想将它拉成一组,以便我可以导出和导入到Excel并转动数据。

2 个答案:

答案 0 :(得分:4)

两个问题:

  1. 误解运算符优先级 - 如果您同时拥有andor,请确保使用()正确包装..
  2. 编译错误 - 每个or之间必须再次指定比较。 q3 = '0' or '1'无法工作 - >更改为q3 = '0' or q3 = '1'
  3. 所以:

    select user_id, q2, q3, q4
    from survey
    where (q2 = '0' or q2 = '1')
    and (q3 = '0' or q3 = '1' or q3 = '2' or q3 ='3')
    and (q4 = '0' or q4 = '1' or q4 = '2' or q4 = '3' or q4 = '4' or q4 = '5')
    

    现在,更好的方式这样做就是使用in

    select user_id, q2, q3, q4
    from survey
    where q2 in ('0','1')
    and q3 in ('0','1','2','3')
    and q4 in ('0','1','2','3','4','5')
    

答案 1 :(得分:3)

您的查询错误的是您无法编写q2 = '1' or '2'。这是无效的语法。请改用in

where q2 in ('0','1') and q3 in ('0','1','2','3') and q4 in ('0','1','2','3','4','5')