SELECT * FROM BlockUsers
WHERE OwnerID IN
(SELECT ID FROM UserAccounts WHERE Code='$UserCode')
AND
BlockID IN
(SELECT ID FROM UserAccounts WHERE Code='$BlockUserCode')
LIMIT 1
或
SELECT * FROM BlockUsers AS bu
INNER JOIN UserAccounts AS ua1 ON ua1.ID = bu.OwnerID
INNER JOIN UserAccounts AS ua2 ON ua2.ID = bu.BlockID
WHERE ua1.Code = '$UserCode' AND ua2.Code = '$BlockUserCode'
LIMIT 1
我想。我没有测试过这些,但我很确定它很接近。
编辑: 我刚刚注意到你正在使用MySQL。你一定要做内部连接而不是子选择。在MySQL中,这些子选择将创建没有索引的派生表。在这些派生表中寻找OwnerID和BlockID将对它们进行全表扫描。如果$ UserCode和$ BlockUserCode将子选择的结果缩小到单行,这可能无关紧要,但是如果它们返回相当多的行,它会真正减慢查询速度。
这不行吗?这是一个有效的SQL查询。 –
不,它没有提出错误,但在同一时间没有正确的结果。 – SReca
感谢大家的帮助! :D – SReca