我还在学习关系除法,所以我对下面的代码不是 100% 有信心。但是这里...
SELECT *
FROM tblTable AS X
WHERE NOT EXISTS ( SELECT *
FROM tblTable AS Y
WHERE Y.u_t_tag_id IN ( 1, 2 )
AND NOT EXISTS ( SELECT *
FROM tblTable AS Z
WHERE Z.u_t_upload_id = X.u_t_upload_id
AND Z.u_t_tag_id = Y.u_t_tag_id )
)
ORDER BY u_t_upload_id;
我针对使用以下脚本创建的测试数据库测试了上述代码...
CREATE DATABASE RelationalDivision002;
USE RelationalDivision002;
CREATE TABLE tblTable
(
u_t_id INT,
u_t_upload_id INT,
u_t_tag_id INT
);
INSERT INTO tblTable( u_t_id,
u_t_upload_id,
u_t_tag_id )
VALUES ( 1, 1, 1 ),
( 2, 1, 2 ),
( 3, 2, 3 ),
( 4, 3, 4 ),
( 5, 3, 5 ),
( 6, 3, 6 ),
( 7, 2, 1 ),
( 7, 3, 1 );
我使用最内层SELECT 的 WHERE 条件的任意组合来测试代码。以上是产生所需输出的唯一方法。
我几乎想通了。
如果您有任何问题或cmets,请随时与我联系。
谢谢。