我需要一些帮助来处理我的查询。Mysql获取尚未使用的行
我需要选择未在另一个查询中选择的数据。
因此,什么是均值为:
表1有50个问题
表2已选择32
再就是18不被使用。
我只需要选择那18个未使用的问题。
希望你能帮助我!
编辑:
表的所有问题:
标识 - 的inputType - InputName - InputLabel
表与被选择的问题:
编号 - 必要 - 位置
关系:标识与编号
我需要一些帮助来处理我的查询。Mysql获取尚未使用的行
我需要选择未在另一个查询中选择的数据。
因此,什么是均值为:
表1有50个问题
表2已选择32
再就是18不被使用。
我只需要选择那18个未使用的问题。
希望你能帮助我!
编辑:
表的所有问题:
标识 - 的inputType - InputName - InputLabel
表与被选择的问题:
编号 - 必要 - 位置
关系:标识与编号
您可以使用LEFT JOIN
:
SELECT T1.*
FROM Table1 T1 LEFT JOIN
Table2 T2 ON T1.Id=T2.Id
WHERE T2.required IS NULL
说明:
当我们加入与LEFT JOIN
这些表格,它将选择从表1,从表2中的所有记录和相应的记录(如果有的话)。我们正在排除已经在表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个小问题。他现在只获得了被选中的问题。所以我不得不打开它或类似的东西。 – 2015-03-02 10:34:31
@MathieuP:这是因为你错误地放置了表名。只要改变它。表1应该是包含完整问题的表格。或者你可以使用'RIGHT JOIN'而不更改名称。两者都可以工作。 – 2015-03-02 10:36:27
Ehm ..它不适合我...我试过这个.. – 2015-03-02 10:39:42
从您的陈述中,它看起来像使用的问题存储在另一个表格Table2。所以它会是这样的;
Select * From Table1 A
Left Join Table2 B On A.QuestionID = B.QuestionID
Where B.QuestionID is Null
SELECT
aq.*
FROM
all_questions aq
LEFT JOIN selected_questions sq ON sq.Id = aq.Id
WHERE sq.Id IS NULL
您可以使用Except
选择第一个表的问题,但不是在二表
select QuiestionID from Questions
except
select QuiestionID from SelectedQuestions
最终答案我用你所有的alswers做了什么。
SELECT fbb.*
FROM formbuildingblock fbb
LEFT JOIN formbbformtemplate fbbft
ON fbbft.formBuildingBlockId = fbb.formBuildingBlockId
WHERE fbbft.formBuildingBlockId IS NULL;
什么是您的表格结构? – 2015-03-02 10:13:49
表格之间的关系是什么? – 2015-03-02 10:13:54
看看EXCEPT语句。可能是你在找什么。 https://msdn.microsoft.com/en-us/library/ms188055.aspx – Veverke 2015-03-02 10:16:15