簡體   English   中英

MySQL語句從一個表讀取數據並檢查另一張表

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

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