簡體   English   中英

從COUNT個表中選擇2行

[英]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_1value_2中時,從A選擇2行。 B中的行特定於具有userid單個用戶。

我需要做的是也使它也可以檢查B是否已經有N行與A_id (在value_1value_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM