MySQL语句从一个表中读取数据,并检查另一个表

MySQL语句从一个表中读取数据,并检查另一个表,mysql,sql,Mysql,Sql,我有两张桌子: 成就: 实现: 问题: 我想从表中检索行。但是,我不想要所有的行,我想要一个特定的Steam ID已经获取的行。让我们以STEAM_0:0:46481449为例,我想首先检查STEAM_0:0:46481449获得的ID列表(实现表的第4列说明是否获得了实现),然后只读取这些实现 我希望这是有道理的,如果不让我知道,这样我可以解释得更好一点 我知道如何使用两个MySQL语句来实现这一点,但是可以使用一个MySQL语句来实现吗?如果是的话那就太棒了请告诉我:D 编辑:我将在

我有两张桌子:

成就

实现

问题

我想从表中检索行。但是,我不想要所有的行,我想要一个特定的Steam ID已经获取的行。让我们以STEAM_0:0:46481449为例,我想首先检查STEAM_0:0:46481449获得的ID列表(实现表的第4列说明是否获得了实现),然后只读取这些实现

我希望这是有道理的,如果不让我知道,这样我可以解释得更好一点

我知道如何使用两个MySQL语句来实现这一点,但是可以使用一个MySQL语句来实现吗?如果是的话那就太棒了请告诉我:D

编辑:我将在下面添加两个查询

SELECT * FROM Achieves WHERE Achieves.SteamID = 'STEAM_0:0:46481449' AND Achieves.Acquired = 1;
然后,我执行以下查询

SELECT * FROM Achievement;
然后通过PHP检查应该获取的ID并输出这些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;

添加您正在使用的两条语句您需要使用join我在操作中添加了这两条语句,您在
achives
表中的
Achivement
ID在哪里参考?谢谢,这确实有效。顺便说一句,我知道我的名字是一团糟,但我习惯了这样。我总是使用Achasition.ID而不仅仅是ID,所以我对此没有问题。我已经在数据库上尝试了您的查询。成功了。两者都输出相同的结果。谢谢你。