Php 检查哪些值不可用';SQL数据库中不存在
我有一个关于MySQL表的问题。Php 检查哪些值不可用';SQL数据库中不存在,php,mysql,sql,Php,Mysql,Sql,我有一个关于MySQL表的问题。 我有两个表(用户(用户id和其他行)和答案(id、答案id和用户id)) 我想检查一下,哪些问题用户还没有回答(例如,在答案表中有5行-4,6,8,1,3(但问题是10),我想从数据库值2,5,7,9,10中取出) 如何编写这样的查询? 我试过加入,但没有成功 我想你有一个问题表格: select * from question where not exists( select 'x' from answer where answer.q
我有两个表(用户(用户id和其他行)和答案(id、答案id和用户id)) 我想检查一下,哪些问题用户还没有回答(例如,在答案表中有5行-4,6,8,1,3(但问题是10),我想从数据库值2,5,7,9,10中取出) 如何编写这样的查询?
我试过加入,但没有成功 我想你有一个
问题
表格:
select *
from question
where not exists(
select 'x'
from answer
where answer.question_id = question.id
)
如果你没有一个
问题
表,那么我想没有解决方案不是坐在mySQL数据库前面,但它应该是有意义的(你没有告诉我们你的问题列在哪里,所以我在占位符中放了一个),你的答案表似乎也必须有或应该有一个指向它正在回答的问题id的链接。如果我做了任何不正确的假设,请让我知道,我会根据需要进行编辑
Select question_id from question_table
where question_id not in (select question_id from answers)
假设您有一个问题和答案表,这是标准的TSQL解决方案:
SELECT Q.QUESTION_ID
FROM QUESTIONS Q LEFT JOIN ANSWERS A ON Q.QUESTION_ID = A.QUESTION_ID
WHERE A.QUESTION_ID IS NULL
或者使用左连接,速度更快
SELECT q.id
FROM question q
LEFT JOIN answers a
ON a.question_id = q.id
WHERE a.id IS NULL
你们也有问题表吗?或者任何其他与
answer\u id
相关的表?您能更清楚地演示您的表吗?我可以确认这将在MySQL中起作用;您提供答案的速度比我快。我不确定它是否是“标准SQL解决方案”,它肯定是一个解决方案,但我不会在SQL Server中使用它,例如,因为它比不存在
慢。但在所有条件相同的情况下,这是个人的偏好。不一定在所有情况下,但根据经验,这确实可能比使用子查询快。不使用内部联接,但也有左|右联接解决了这个问题。@Piskvor:亲爱的,我使用的不是存在的,不是内部联接。右边的第二部分,与左/外连接相同,检查另一个表的NULL值,其中子句我知道您使用了什么;我的回答是“没有(其他)解决方案”。正如您在其他答案中所看到的,显然有一个。@Piskvor:我的句子:“没有解决方案”是在现有的问题表中引用的;)。我编辑了我的答案以便更好地阅读哦,好吧,我误解了你的意思;我道歉:)