我有这两个表:
成就:
Achievement http://image.prntscr.com/image/f2de060d501a4af395fd94e4f6e7cd00.png
实现:
Achieves http://image.prntscr.com/image/295df6dc6a174ef5b00c7968273eb92a.png
问题:
我想从表格中检索行。但是,我不想要所有的行,我想要特定的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个查询中获得相同的结果,因为它更易读,更容易。
答案 0 :(得分:0)
在sql 左连接中,在第二个表上应用条件会在连接条件不重要时过滤结果:
Select * from achievement
left join achieves on (achievement.id=achieves.id)
where achieves.acquired=1 and achieves.SteamID = 'STEAM_0:0:46481449'
此外,我建议不要在achieves表中使用ID作为两个表之间的共享密钥。将其命名为其他。
答案 1 :(得分:0)
我认为左连接在这里没有意义。在任何情况下,您都不希望看到成就表。
像这样的东西
SELECT *
FROM Achieves A
JOIN Achievement B on A.ID = B.ID
WHERE A.SteamID = 'STEAM_0:0:46481449'
AND A.Acquired = 1;