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