我們來看看下面的**,這個**是乙個inner join的ef core查詢,其中用subcategory表inner join了subcategorylanguage表,但是我們需要在subcategorylanguage表上只查詢出其datastatus等於1的行,所以需要用到子查詢:
var count = dbcontext.subcategory.where(e => e.categorycode == "0e3b0d17-516e-489e-9df3-3ecda10d14eb
" && e.datastatus == 1
).join(dbcontext.subcategorylanguage.where(e => e.datastatus == 1
), sc => sc.subcategorycode, sl => sl.subcategorycode, (sc, sl) => new
).count(s => s.subcategoryname == "
category001
" && s.languagecode == "
cn");
如上面**黃色高亮所示,我們在subcategorylanguage表的查詢中加上了datastatus == 1的查詢條件,執行該**使用ef core的後台日誌我們可以看到生成的sql如下:
******************************= ef core log started ******************************=executed dbcommand (176ms) [parameters=, commandtype='text', commandtimeout='0']
select count(*)
from [md].[subcategory] as [e]
inner join (
select [e0].*
from [md].[subcategorylanguage] as [e0]
where [e0].[datastatus] = 1
) as [t] on [e].[subcategorycode] = [t].[subcategorycode]
where (([e].[categorycode] = n'0e3b0d17-516e-489e-9df3-3ecda10d14eb') and ([e].[datastatus] = 1)) and (([t].[subcategoryname] = n'category001') and ([t].[languagecode] = n'cn'))
******************************= ef core log finished ******************************=
我們可以看到在生成的sql中,inner join在subcategorylanguage表上使用了子查詢,在黃色高亮部分我們還可以看到其加上了where條件[datastatus] = 1。所以在ef core中使用join的時候,是可以使用子查詢來限制join表的查詢條件的。
利用EF Core的Join進行多表查詢
話說有這麼一家子,老公養了一條狗,老婆養了乙隻貓。人表 寵物表 通過表可以知道,寵物通過owner指向主人的id。問題來了,我要和故事開頭一樣,老公 狗,老婆 貓,對應起來,怎麼查詢呢?有同學說這還不簡單?兩個遍歷一下不就行了。首先 取出 list 寵物 集合,再根據寵物的主人id去查詢對應的主人資...
python對流進行join
對流的合併,有時各個流的進度需要根據資料的不同而定。def joinstreams instreams,getnext lambda data,livings livings 把各流進行關聯,instreams是流陣列,getnext函式決定從哪些流中取下一批資料,輸入引數為流編號,輸出應為需要從哪...
CakePHP 使用JOIN進行多表聯合查詢
在 select,update 和 delete 語句中可以使用 join 來進行多表聯合查詢,join按照功能分為以下三類 例如有以下三張資料表,它們之間沒有關聯關係,但都有city code字段 現需要從三張資料表中聯合查詢,原始sql語句如下 select a.city name,b.city...