假設我有以下簡單的布局(這是我所擁有的簡化版本,實際上我正在使用 TypeORM 來實作這一點);
user(id, name)
game(id, name)
players(id, userId, gameId)
現在我想檢索用戶參與的所有內容games。players
以下查詢將獲取游戲中的所有玩家;
SELECT g.id, p.* FROM games g JOIN players p ON g.id = p.gameId
但是,現在我想通過僅選擇所有games和players特定用戶參與來過濾它。我所做的是以下內容;
SELECT g.id, p.* FROM games g JOIN players p ON g.id = p.gameId WHERE p.userId = :userId
現在這顯然回傳了播放器的所有行。但是我怎么也能得到其他:userId參與的玩家呢?這似乎是一件容易的事,但我無法真正理解它。
uj5u.com熱心網友回復:
試試這個查詢:
SELECT g.id, p.*
FROM games g JOIN players p ON g.id = p.gameId
WHERE g.id IN (
SELECT u.gameId
FROM players u
WHERE u.userId = :userId
)
uj5u.com熱心網友回復:
您可以嘗試加入players兩次games表和一次表:
SET @userid := 1;
SELECT g.id, p1.*
FROM players p1
JOIN players p2
ON p1.gameId=p2.gameId
JOIN games g
ON p1.gameId=g.id
WHERE p1.userId= @userId;
演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417222.html
標籤:
下一篇:使用正則運算式從影像中洗掉無效值
