[英]MySQL statement to read data from one table with checks on another table
我有這兩個表:
成就:
實現:
問題:
我想從表 Achievement 中檢索行。 但是,我不想要所有行,我想要特定 Steam ID 獲取的行。 以STEAM_0:0:46481449為例,我想先查看STEAM_0:0:46481449獲得的ID列表(Achieves表第4列表示是否獲得成就),然后只讀取這些成就。
我希望這是有道理的,如果不是讓我知道,那么我可以更好地解釋一下。
我知道如何用兩個 MySQL 語句來做到這一點,但是這可以用一個 MySQL 語句來完成嗎? 如果是這樣,那就太棒了,請告訴我:D
編輯:我將在下面添加兩個查詢
SELECT * FROM Achieves WHERE Achieves.SteamID = 'STEAM_0:0:46481449' AND Achieves.Acquired = 1;
然后我做以下查詢
SELECT * FROM Achievement;
然后通過 PHP 我會檢查我應該使用的 ID 並輸出它們。 這就是為什么我想在 1 個查詢中獲得相同的結果,因為它更具可讀性和更容易。
在 sql left join 中,當連接條件無關緊要時,在第二個表上應用條件將過濾結果:
Select * from achievement
left join achieves on (achievement.id=achieves.id)
where achieves.acquired=1 and achieves.SteamID = 'STEAM_0:0:46481449'
此外,我建議不要在實現表中使用 ID 作為兩個表之間的共享鍵。 把它命名為別的東西。
我認為左連接在這里沒有意義。 在任何情況下,您都不想看到成就表。
像這樣的東西
SELECT *
FROM Achieves A
JOIN Achievement B on A.ID = B.ID
WHERE A.SteamID = 'STEAM_0:0:46481449'
AND A.Acquired = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.