我有两个表A和B表
表A具有用户ID和COURSE_ID和表B具有用户ID&courseid。
我想要一个表,而所有这一切都在表B.不应该含有在表B.任何记录记录
对于如。
如果表A有:
userid: 224 courseid: 6
userid: 224 courseid: 7
userid: 224 courseid: 8
如果表B有:
userid: 224 courseid: 6
userid: 224 courseid: 7
然后,在新表应具有:
userid: 224 courseid: 8
我对表格的代码:
SELECT ue.userid AS userid,
Concat(u.firstname, ' ', u.lastname) AS user,
en.courseid AS course_Id,
co.fullname AS Course_Name,
cu.companyid AS companyId,
company.name
FROM `mdl_user_enrolments` AS ue
LEFT JOIN `mdl_enrol` AS en
ON ue.enrolid = en.id
LEFT JOIN `mdl_course` AS co
ON en.courseid = co.id
LEFT JOIN `mdl_user` AS u
ON ue.userid = u.id
LEFT JOIN `mdl_company_users` AS cu
ON cu.userid = ue.userid
LEFT JOIN `mdl_company` AS company
ON company.id = cu.companyid
WHERE co.id IN ( 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12 )
AND company.id = 1
表B:
SELECT u.id,
p.course
FROM mdl_course_completions AS p
JOIN mdl_course AS c
ON p.course = c.id
JOIN mdl_user AS u
ON p.userid = u.id
WHERE c.enablecompletion = 1
AND p.course IN ( 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12 )
OUTPUT:
我不想从表B中的任何行,其具有表A与用户ID和courseid比较。
我想这个查询得到我想要的输出。但是它不包括表A中的所有用户(用户ID),其是常见于表B.
SELECT ue.userid如用户ID,CONCAT(u.firstname,””,u.lastname)作为用户,如en.courseid COURSE_ID,co.fullname如COURSE_NAME,cu.companyid如companyId,company.name FROM
mdl_user_enrolments
作为UE左连接mdl_enrol
为EN ON ue.enrolid = en.id左加入mdl_course
作为共同ON en.courseid = co.id左加入mdl_user
作为U ON ue.userid = u.id左加入mdl_company_users
如铜ON cu.userid = ue.userid左加入mdl_company
作为公司ON company.id = cu.companyid其中co.id IN(1,2,3,4,5,6,7,8,9,10,11,12)AND company.id = 1 AND ue.userid NOT IN(SELECT u.id FROM mdl_course_completions为p mdl_course JOIN为C ON p.course = c.id JOIN mdl_user AS U ON p.userid = u.id WHERE c.enablecompletion = 1 AND p.course IN( 1,2,3,4,5,6,7,8,9,10,11,12))
谢谢。
换句话说,你正在寻找一个包含表A的行,其中表用户ID等于表B中的用户ID和桌子的courseid不同的表B中courseid,让您的查询将是一个表:
SELECT a.userid, a.courseid FROM a, b WHERE (a.userid = b.userid AND a.courseid != b.courseid) OR a.userid != b.userid
这应该工作