mysql - SQL加入正确的用户名

标签 mysql sql database

假设我有下表

User
__________
id
username
email

FriendGame
__________
id
useroneid
usertwoid
status

我想获取当前用户所属的游戏,所以我这样做:

SELECT *
FROM FriendGame
WHERE useroneid=1663702020516206
OR usertwoid=1663702020516206
AND STATUS =1;

这很好。现在我想加入用户名,但仅限于不是所提供的用户 (1663702020516206) 的用户,因为在 FriendGame 中,给定的用户以 useroneid 或 usertwoid 的形式存在。

最佳答案

您几乎可以将逻辑直接转换为 on 子句:

SELECT fg.*
FROM FriendGame fg JOIN
     User u
     ON (fg.useroneid = 1663702020516206 and fg.usertwoid = u.id) or
        (fg.usertwoid = 1663702020516206 and fg.useroneid = u.id) 
WHERE 1663702020516206 in (fg.useroneid, fg.usertwoid) AND
      STATUS = 1;

实际上,where子句对于获得正确的结果集来说并不是必需的,但我认为它使查询的意图更加清晰。

关于mysql - SQL加入正确的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713854/

相关文章:

java - java将数据保存在内存中而不是保存在数据库中

安卓连接oracle数据库

mysql - JBOSS 和 MySql

java - 使用 BlueMix 尝试将 JSON 数据插入 Cloudant 数据库,而无需在 Java 中对文件格式进行硬编码

mysql - 插入随机字符到MYSQL数据库

c# - C#中嵌套SQL的理解

sql - 为什么 SSMS 中 "TRANSFER"呈蓝色?

SQL 问题 : Calculating percentages and using multiple joins to the same table

php - 将来自多个 MySql 表的多行数据合并为 SELECT 语句的单行

MySQL 浮点近似值和精度