Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在此查询中使用SQL联合的替代方案?_Mysql_Sql - Fatal编程技术网

Mysql 在此查询中使用SQL联合的替代方案?

Mysql 在此查询中使用SQL联合的替代方案?,mysql,sql,Mysql,Sql,我有一个包含user1和user2列的friends表,还有一个包含login字段的users表 朋友“对”可以以任何一种方式存储,例如user1=Joe和user2=Dave,也可以是user1=Dave和user2=Joe,同样的事情 我想找到一个用户(比如“Joe”)在过去30天内登录的所有朋友(我不关心日期格式,只希望能够在一个查询中完成) 使用联合体是唯一的解决方案吗?它的性能最好吗?a联合体在这里是不必要的。只需选择,其中user1='Joe'或user2='Joe'联合不是唯一的选

我有一个包含user1和user2列的friends表,还有一个包含login字段的users表

朋友“对”可以以任何一种方式存储,例如user1=Joe和user2=Dave,也可以是user1=Dave和user2=Joe,同样的事情

我想找到一个用户(比如“Joe”)在过去30天内登录的所有朋友(我不关心日期格式,只希望能够在一个查询中完成)


使用联合体是唯一的解决方案吗?它的性能最好吗?

a
联合体在这里是不必要的。只需选择
,其中user1='Joe'或user2='Joe'
联合不是唯一的选项,例如,您可以这样做:

select u.user
from users u
inner join friends f on u.user = case f.user1 when 'Joe' then f.user2 else f.user1 end
where f.user1 = 'Joe' or f.user2 = 'Joe'

这是否比联合快取决于几件事,主要取决于你有什么索引。

尽管你可能还需要在select中使用某种case语句来拉出相应的用户列作为“朋友”。