Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Sql 帮助限制内部联接_Sql_Mysql_Inner Join - Fatal编程技术网

Sql 帮助限制内部联接

Sql 帮助限制内部联接,sql,mysql,inner-join,Sql,Mysql,Inner Join,我需要帮助限制内部连接 表格: uid 3 3 3 3 7 47 47 47 47 47 47 47 47 47 47 uid 3 3 3 3 7 47 47 47 47 47 用户: 液体 左 活跃的 文件: uid 3 3 3 3 7 47 47 47 47 47 47 47 47 47 47 uid 3 3 3 3 7 47 47 47 47 47 氢火焰离子化检测器 uid=fid 结果: uid 3 3 3 3 7 47 47 47 47 47 47 47 47

我需要帮助限制内部连接

表格:

uid
3
3
3
3
7
47
47
47
47
47
47
47
47
47
47
uid
3
3
3
3
7
47
47
47
47
47

用户:

  • 液体
  • 活跃的

文件:

uid
3
3
3
3
7
47
47
47
47
47
47
47
47
47
47
uid
3
3
3
3
7
47
47
47
47
47
  • 氢火焰离子化检测器

uid=fid


结果:

uid
3
3
3
3
7
47
47
47
47
47
47
47
47
47
47
uid
3
3
3
3
7
47
47
47
47
47
我需要将内部联接限制为5。所以“uid”不会出现超过5次。比如:

uid
3
3
3
3
7
47
47
47
47
47
47
47
47
47
47
uid
3
3
3
3
7
47
47
47
47
47

更新:

uid
3
3
3
3
7
47
47
47
47
47
47
47
47
47
47
uid
3
3
3
3
7
47
47
47
47
47
下面是php代码

 $res = do_sqlquery("SELECT uid FROM users as u INNER JOIN files as x ON u.fid=x.fid WHERE u.left = '0'  AND u.active='1'");
   if (mysql_num_rows($res) > 0)
   {
       while ($arr = mysql_fetch_assoc($res))
       {
       $x=$arr["uid"];
       quickQuery("UPDATE users SET pots = pots+".$GLOBALS["bui"]."*".$cleaint."/900 WHERE id = '$x'");
       }
   }
在MySQL中:

SELECT CONCAT(`uid`, ":", MAX(5, COUNT(`fid`))) `uid_count`
FROM ...
GROUP BY `uid`
为您提供如下结果:

uid_count
3:4
7:1
47:5
例如,在PHP中,您可以在获取后拆分:

while (FALSE !== ($row = mysql_fetch_assoc($query))) {
    ($uid, $count) = split(':', $row['uid_count'], 2);
}
在MySQL中:

SELECT CONCAT(`uid`, ":", MAX(5, COUNT(`fid`))) `uid_count`
FROM ...
GROUP BY `uid`
为您提供如下结果:

uid_count
3:4
7:1
47:5
例如,在PHP中,您可以在获取后拆分:

while (FALSE !== ($row = mysql_fetch_assoc($query))) {
    ($uid, $count) = split(':', $row['uid_count'], 2);
}

仅MySQL解决方案,不使用PHP

SELECT uid
from (
    SELECT u.uid, @r:= if(@u=u.uid,@r+1,1) r, @u:=u.uid
    FROM users AS u
    CROSS JOIN (select @u:=null) g
    INNER JOIN files AS x ON u.uid = x.fid
    WHERE u.`left` = '0'
    AND u.active = '1'
    ORDER BY u.uid ASC
) U
WHERE U.r <= 5
ORDER BY uid ASC

仅MySQL解决方案,不使用PHP

SELECT uid
from (
    SELECT u.uid, @r:= if(@u=u.uid,@r+1,1) r, @u:=u.uid
    FROM users AS u
    CROSS JOIN (select @u:=null) g
    INNER JOIN files AS x ON u.uid = x.fid
    WHERE u.`left` = '0'
    AND u.active = '1'
    ORDER BY u.uid ASC
) U
WHERE U.r <= 5
ORDER BY uid ASC

谢谢,但没用。结果是不对的。我编辑了我的帖子,并添加了phpI just test you code on my localhost和“仅限MySQL的解决方案”结果不正确。“仅限不含MySQL变量的SQL”在我的localhost服务器版本:5.1.37上效果很好,但在我的站点服务器版本:5.0.91-community-log上,我收到错误#1054-在'field list'中未知列'u.uid'。user该版本可能区分大小写。将第一行更改为大写
选择U.uid
。否则,您是否更改了本地主机和站点服务器之间的任何表/别名?谢谢,但不起作用。结果是不对的。我编辑了我的帖子,并添加了phpI just test you code on my localhost和“仅限MySQL的解决方案”结果不正确。“仅限不含MySQL变量的SQL”在我的localhost服务器版本:5.1.37上效果很好,但在我的站点服务器版本:5.0.91-community-log上,我收到错误#1054-在'field list'中未知列'u.uid'。user该版本可能区分大小写。将第一行更改为大写
选择U.uid
。否则,您是否更改了本地主机和站点服务器之间的任何表/别名?@Pablo Santa Cruz-MySQLclient@PabloSanta Cruz MySQL客户端