Mysql获取尚未使用的行

时间:2015-03-02 10:13:00

标签: mysql sql

我的查询需要一些帮助。

我需要选择未在另一个查询中选择的数据。

所以意思是:
表1有50个问题 表2选择了32
然后有18个未使用 我只需要选择18个未使用过的问题。

希望你能帮助我!

编辑:
表格包含所有问题:
Id - InputType - InputName - InputLabel

选定问题的表格:
Id - 必需 - 位置

关系:ID为Id

5 个答案:

答案 0 :(得分:2)

您可以使用LEFT JOIN

SELECT T1.*
FROM Table1 T1 LEFT JOIN
     Table2 T2 ON T1.Id=T2.Id
WHERE T2.required IS NULL

<强>解释

当我们将这些表与LEFT JOIN连接时,它将选择Table1中的所有记录和Table2中的相应记录(如果有的话)。我们排除表2中已有的问题。

考虑表数据:

Table1                       Table2
--------------------------------------------------
id    Question               id     Question
1     Question1              1      Question1
2     Question2              3      Question3
3     Question3              5      Question5
4     Question4              
5     Question5              
6     Question6              

然后这个查询将结果:

id    Question   
-----------------                 
2     Question2                 
4     Question4 
6     Question6                   

答案 1 :(得分:1)

SELECT 
    aq.* 
FROM 
all_questions aq
LEFT JOIN selected_questions sq ON sq.Id = aq.Id
WHERE sq.Id IS NULL

答案 2 :(得分:0)

从您的陈述中,看起来使用的问题存储在另一个表Table2中。所以它就像是;

Select * From Table1 A
Left Join Table2 B On A.QuestionID = B.QuestionID
Where B.QuestionID is Null

答案 3 :(得分:0)

您可以使用Except

在第一张表中选择这些问题,但不在第二张表中选择

select QuiestionID from Questions
except
select QuiestionID from SelectedQuestions

答案 4 :(得分:0)

最后回答我用你所有的alswers。

SELECT fbb.*
FROM formbuildingblock fbb
LEFT JOIN formbbformtemplate fbbft
ON fbbft.formBuildingBlockId = fbb.formBuildingBlockId
WHERE fbbft.formBuildingBlockId IS NULL;