- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显示组,当用户打开页面时应该随机显示两个组。因此,以下查询工作正常,但 GROUP BY 不适用于许多 MySQL 5.7 使用,因为 5.7 使用 "ONLY_FULL_GROUP_BY" 选项 SQL_MODE。除了"GROUP BY"
,您是否可以建议任何其他查询格式?
查询必须显示为
如果登录用户 ID ( $uid
) 不是 加入 group_users F.group_user_id <> '$uid'
如果登录用户 ID ( $uid
) 不是 群组所有者(群组创建者)群组 G.group_owner_id <> '$uid'
.
$query = mysqli_query($this->db,"SELECT DISTINCT
G.group_id,
G.group_owner_id,
G.group_name,
G.group_title,
G.group_cover,
F.group_oid,
F.group_user_id
FROM groups G,
group_users F
WHERE G.status ='1' AND
G.group_id = F.group_oid AND
G.group_owner_id <> '$uid' AND
F.group_user_id <> '$uid'
GROUP BY G.group_id
ORDER BY rand()
LIMIT 2 ") or die(mysqli_error($this->db));
最佳答案
鉴于您已经在使用 SELECT DISINCT
,这意味着您甚至不需要使用 GROUP BY
。只需删除它,错误就会消失。如果你想使用 GROUP BY
来模拟 DISTINCT
的效果,那么你可以简单地 GROUP BY
每一列:
SELECT
G.group_id,
G.group_owner_id,
G.group_name,
G.group_title,
G.group_cover,
F.group_oid,
F.group_user_id
FROM groups G
INNER JOIN group_users F
ON G.group_id = F.group_oid
WHERE
G.status = '1' AND
G.group_owner_id <> '$uid' AND
F.group_user_id <> '$uid'
GROUP BY
G.group_id,
G.group_owner_id,
G.group_name,
G.group_title,
G.group_cover,
F.group_oid,
F.group_user_id
ORDER BY rand()
LIMIT 2;
请注意,如果您还选择某些列的聚合,我们将有更多工作要做。然后,很可能我们最终会引入一个或多个子查询来解决您面临的 GROUP BY
问题。
关于php - GROUP BY 不适用于许多 MySQL 5.7,因为 5.7 使用 SQL_MODE 的 "ONLY_FULL_GROUP_BY"选项。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968825/
我有一个在 MySQL 5.6 上运行良好的存储过程。在最近的服务器迁移过程中,我们升级到 MySQL 5.7.19。 我的存储过程现在抛出错误: SELECT 列表的表达式 #1 不在 GROUP
我有一个在 MySQL 5.6 上运行良好的存储过程。在最近的服务器迁移过程中,我们升级到了 MySQL 5.7.19。 我的存储过程现在抛出错误: SELECT 列表的表达式 #1 不在 GROUP
我正在尝试使用这样的自定义查询: @Query("SELECT i " + "FROM ManagerWorkplace i " + "WHERE i.managerId
通过MySQL命令行客户端,我尝试设置全局mysql_mode: SET GLOBAL sql_mode = TRADITIONAL; 这适用于当前 session ,但在我重新启动服务器后,sql_
我正在尝试在测试环境中测试查询,如下所示 查询:- SELECT a.aggreatorid AS aggreatorid, '' AS txndesc, DATE_FORMAT(DATE(b.tx
我目前在 Windows 10 中使用 mysql server 5.6。在使用 mysql 时,不断出现这样的错误“以下列没有默认值”我在互联网上读到我可以解决这个问题如果我更改 sql_mode。
我的 MySQL 服务器的 sql_mode 设置为 STRICT。对于我正在开发的特定应用程序,我想将其更改为 TRADITIONAL。但是,我不可能在服务器级别执行此操作。 是否可以在我的 PHP
通过 MySQL 命令行客户端,我正在尝试设置全局 mysql_mode: SET GLOBAL sql_mode = TRADITIONAL; 这适用于当前 session ,但在我重新启动服务器后
sql_mode="",即强制不设定MySql模式(如不作输入检测、错误提示、语法模式检查等)应该能提高性能,但有如下问题: 如果插入了不合适数据(错误类型或超常),
请求有关“mysqldump”错误的帮助 我正在弄清楚为什么会发生以下错误。所以,请任何人帮助我。我的写作:A、B、C、DsA. 这是 my.ini 文件 # For advice on how to
我已经使用此 SQL 设置了 SQL_MODE。 SQL 为 SET SQL_MODE='ALLOW_INVALID_DATES'; 现在我们想要恢复它。 请建议我如何做到这一点。 最佳答案 首先运行
我正在运行这个 SQL 语句: SELECT *, GROUP_CONCAT(contact) AS contact FROM table4, table3, table2, tab
SELECT DISTINCT `A/C#` AS `A/C#`, `MyRef` AS `MyRef`, DATEDIFF('2017-06-30', `Date`) AS
这个问题在这里已经有了答案: SQL select only rows with max value on a column [duplicate] (27 个答案) Error related t
我看到我在要插入数据库的表的末尾有这段代码: /*!40000 ALTER TABLE `to_import` ENABLE KEYS */; /*!40101 SET SQL_MODE=@OLD_S
我在 mac El Capitan 上使用 5.7.9 版本,如下所示。 ~ mysql -u root -p Enter password: Welcome to the MySQL monito
我的 SQL 语句在另一台本地服务器上运行良好,但在最近安装的 lamp 服务器上尝试我的项目后,它显示以下错误- Expression #2 of SELECT list is not in GRO
我有这个脚本,我习惯于为动态结果做一个简单的投影 SELECT M.nom_utilisateur, SUM(M.montant_bulletin ) as Montant_T
MySQL中有一些sql_mode值: ANSI, IGNORE_SPACE, STRICT_TRANS_TABLES等 我怎样才能看到一个特定的值?手册说: You can retrieve the
我的 SQL 查询不工作显示此错误: this is incompatible with sql_mode=only_full_group_by 我在其他 mysql pannel 中运行此查询,那里
我是一名优秀的程序员,十分优秀!