我有两张桌子:
CREATE TABLE IF NOT EXISTS `test_category` (
`_id` int(11) NOT NULL AUTO_INCREMENT,
`score_type` varchar(50) NOT NULL,
`sub_code` int(11) NOT NULL,
`duration` varchar(10) NOT NULL,
`status` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`_id`),
KEY `sub_code` (`sub_code`)
)
CREATE TABLE IF NOT EXISTS `questions` (
`_id` int(11) NOT NULL AUTO_INCREMENT,
`question` varchar(255) NOT NULL,
`correct_ans` varchar(255) NOT NULL,
`incorrect1` varchar(255) NOT NULL,
`incorrect2` varchar(255) NOT NULL,
`incorrect3` varchar(255) NOT NULL,
`test_cat` int(11) NOT NULL,
`image_location` varchar(50) NOT NULL,
PRIMARY KEY (`_id`),
KEY `test_cat` (`test_cat`)
)
ALTER TABLE `questions`
ADD CONSTRAINT `questions_ibfk_1` FOREIGN KEY (`test_cat`) REFERENCES `test_category` (`_id`);
所以基本上这两个表是相关的。问题表通过引用到test_category _id的表问题中的外键test_cat与test_category表相关。我要显示的是来自test_category的条目,其中包含与问题表相关的条目。如果test_category中的条目没有问题表中对其的任何引用,则不应显示该条目。
select distinct test_category._id, test_category.score_type
from test_category join questions
where ??
那是我尝试过的SQL,但我不知道如何在哪里过滤它...
最佳答案
select distinct test_category._id, test_category.score_type from test_category
join questions
on 'questions.test_cat' = 'test_category._id'
关于mysql - MySQL过滤来自不包含内容的外键的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24136829/