繁体   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