[英]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.