Mysql 查询被阻止的用户

Mysql 查询被阻止的用户,mysql,sql,Mysql,Sql,我需要你的帮助。我必须做一个查询,只查看表users\u blocked上没有我的id 1的人 我试着这样做: SELECT U.first_name, U.sex, U.age, U.id, UB.request_user_id, UB.block_user_id FROM users U, users_blocked UB WHERE U.sex <> 'm' AND NOT (UB.request_user_id = U.id AND UB.block_user_id = 1

我需要你的帮助。我必须做一个查询,只查看表users\u blocked上没有我的id 1的人

我试着这样做:

SELECT 
U.first_name, U.sex, U.age, U.id, UB.request_user_id, UB.block_user_id
FROM users U, users_blocked UB
WHERE U.sex <> 'm'
AND NOT (UB.request_user_id = U.id AND UB.block_user_id = 1)

如果我正确理解了您的问题,您希望搜索block_user_id不等于1且两个表中都存在记录的所有记录。下面提到的查询将帮助您

试试这个:

SELECT 
    U.first_name, U.sex, U.age, U.id, UB.request_user_id, UB.block_user_id
FROM users U
INNER JOIN users_blocked UB ON U.id = UB.block_user_id
WHERE U.sex <> 'm' AND UB.block_user_id != 1
选择
U.first_name,U.sex,U.age,U.id,UB.request_user_id,UB.block_user_id
来自用户U
内部加入用户\U在U.id上阻止UB=UB.block\U用户\U id
其中U.sex'm'和UB.block_user_id!=1.
选择*from users u join users\u block ub on u.id=ub.request\u user\u id,其中u.sex'm'和ub.block\u user\u id!=1.
可能

SELECT u.id FROM users u 
INNER JOIN users_blocked ub ON u.id = ub.request_user_id
WHERE u.sex <> 'm' and ub.block_user_id <> 1
从用户u中选择u.id
内部加入用户\u在u.id=ub.request\u用户\u id上阻止ub
其中u.sex'm'和ub.block_用户id 1

若我理解正确,您需要针对被阻止的
用户加入
用户
两次,因为您希望使用两个不同的列进行加入(因为您希望未在被阻止的用户中记录的用户,在以下任何列中:
请求用户id
阻止用户id

您应该使用
左联接
(如果
选择
中的第一个表是users),因为首先需要选择所有用户;如果使用内部联接,则不会选择在
users\u blocked
中没有记录的任何用户

一旦你有了它,你就过滤掉所有
block\u user\u id
request\u user\u id
都为空的记录。我建议您在不使用
WHERE
子句的情况下运行查询,并使用
SELECT*
来更清楚地了解其工作原理(以及原因)

SELECT * 
FROM users u 
LEFT JOIN users_blocked blocked ON blocked.block_user_id = u.id
LEFT JOIN users_blocked requester ON requester.request_user_id = u.id
WHERE blocked.block_user_id IS NULL AND requester.request_user_id IS NULL
SELECT u.id FROM users u 
INNER JOIN users_blocked ub ON u.id = ub.request_user_id
WHERE u.sex <> 'm' and ub.block_user_id <> 1
SELECT * 
FROM users u 
LEFT JOIN users_blocked blocked ON blocked.block_user_id = u.id
LEFT JOIN users_blocked requester ON requester.request_user_id = u.id
WHERE blocked.block_user_id IS NULL AND requester.request_user_id IS NULL