0

我是一个完整的 SQL 初学者。我正在使用一个查询数据库的程序,然后处理结果。默认查询是:

SELECT * 
FROM data, 
     questions, 
     users 
where users.U_Id = data.Subj_Id 
  and data.Subj_Id between 1 and 10 
  and data.Q_Id = questions.Q_Id 
  and questions.Q_Id between 1 and 10 
order by Subj_Id;

我希望它查询每Subj_Id一个Q_Id. 我不知道有多少,不同的科目有不同的问题。我应该如何更改上述查询?

4

1 回答 1

4

您可以像这样重写上面的查询。

select * 
from 
    data 
        inner join 
    users on users.U_Id = data.Subj_Id 
        inner join 
    questions on data.Q_Id = questions.Q_Id 
where data.Subj_Id between 1 and 10 
and questions.Q_Id between 1 and 10 
order by Subj_Id; 

通过将表之间的连接与数据的过滤器分开,这使得它更加清晰。所以要查询整个数据库,你只需where从上面删除子句......

select * 
from 
    data 
        inner join 
    users on users.U_Id = data.Subj_Id 
        inner join 
    questions on data.Q_Id = questions.Q_Id 
order by Subj_Id; 
于 2012-10-09T18:23:53.577 回答