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