[英]Select 2 Rows from Table when COUNT of another table
這是我目前擁有的代碼:
SELECT `A`.*
FROM `A`
LEFT JOIN `B` ON `A`.`A_id` = `B`.`value_1`
WHERE `B`.`value_2` IS NULL
AND `B`.`userid` IS NULL
ORDER BY RAND() LIMIT 2
當前應該做的是,當選擇的2行A_id
不在B
value_1
或value_2
中時,從A
選擇2行。 B
中的行特定於具有userid
單個用戶。
我需要做的是也使它也可以檢查B
是否已經有N行與A_id
(在value_1
或value_2
)和userid
相匹配,並且如果有N行以上,則不選擇A
排。
以下將處理您的第一個請求:
Select ...
From A
Left Join B
On ( B.value_1 = A.A_id Or B.value_2 = A.A_id )
And B.userid = @userid
Where B.<non-nullable column> Is Null
技巧的一部分是將您的條件移到“左聯接”的ON子句中。 我不確定您要求的第二部分與第一部分是否相符。 如果B中沒有行與給定用戶的value_1或value_2匹配,則根據定義,行數將為零。 您是否想要在這樣的情況下,在給定條件下B中只能有最大數量的行匹配? 如果是這樣,那么我將這樣編寫查詢:
Select ...
From A
Where (
Select Count(*)
From B B2
Where ( B2.value_1 = A.A_id Or B2.value_2 = A.A_id )
And B2.userid = @userid
) <= @MaxItems
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.