簡體   English   中英

多個存在的查詢不返回任何內容(SQL)

[英]Multiple exists queries not returning anything (SQL)

當我運行單個存在查詢時,我得到了預期的結果:

SELECT * 
FROM `slasher_farming_mods` 
WHERE EXISTS (SELECT * FROM `slasher_farming_brands` 
              WHERE `slasher_farming_mods`.`brand_id` = `slasher_farming_brands`.`id` 
                AND `brand_id` = '7' 
              ORDER BY `id` asc) 
LIMIT 4 OFFSET 0

當我運行多個現有查詢時,我沒有得到任何結果:

SELECT * 
FROM `slasher_farming_mods` 
WHERE EXISTS (SELECT * FROM `slasher_farming_brands` 
              WHERE `slasher_farming_mods`.`brand_id` = `slasher_farming_brands`.`id` 
                AND `brand_id` = '7' 
                ORDER BY `id` ASC) 
  AND EXISTS (SELECT * FROM `slasher_farming_brands` 
              WHERE `slasher_farming_mods`.`brand_id` = `slasher_farming_brands`.`id` 
                AND `brand_id` = '24' 
              ORDER BY `id` ASC) 
LIMIT 4 OFFSET 0

嘗試在 laravel 中使用調試欄來查看我的查詢是否耗時過長,但耗時不到 1 毫秒。 這里可能有什么問題,我也嘗試直接在 phpmyadmin 內部運行這些查詢,但仍然沒有結果存在多個位置。

查詢由 laravel 中的 foreach 循環填充。

   foreach ($brands as $brand){
            $query->whereHas('brand', function($q) use ($brand){
                $q->where('brand_id', '=', $brand)->orderBy('id');
            });
        }
    }

您的查詢不起作用,因為給定記錄的 brand_id 不能同時為 7 和 24。 你想要“或”。 brand_id in (7, 24)而不是兩個單獨的子查詢會更清楚。 對子查詢進行排序沒有意義。

或者,連接兩個表:

select ...
from slasher_farming_mods m
join slasher_farming_brands b on m.brand_id = b.id
where brand_id in (7, 24)
LIMIT 4 OFFSET 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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