php - MySQL query from PHP
问题描述
I need to make this query from PHP:
set @row:=-1;
SELECT * FROM `tablename`
INNER JOIN (
SELECT `id` FROM (
SELECT @row:=@row+1 AS rownum, `id` FROM (
SELECT id FROM `tablename` ORDER BY `id` DESC
)
AS sorted
) as ranked WHERE rownum % 14 = 0
) AS subset ON subset.id = `tablename`.id LIMIT 24;
Works fine in PHPMyAdmin, but I have an error for the "set@row=-1;". :(
Thanks in advance!
解决方案
您可能会尝试在单个语句中使用这些mysqli_query
语句。这些是多个陈述;您需要在使用 PHP 代码时单独查询它们。
但是,您也可以使用以下方法将这两个查询转换为一个查询CROSS JOIN
:
SELECT * FROM `tablename`
INNER JOIN (
SELECT `id` FROM (
SELECT @row:=@row+1 AS rownum, `id` FROM (
SELECT id FROM `tablename` ORDER BY `id` DESC
) AS sorted
CROSS JOIN (SELECT @row := -1) AS user_init_vars
/* shifted SET statement to the above line (remove the comment before using) */
) as ranked WHERE rownum % 14 = 0
) AS subset ON subset.id = `tablename`.id LIMIT 24;
推荐阅读
- flutter - Flutter:处理异步操作
- chef-infra - 将节点引导到厨师获得许可证错误
- react-native - 全局更改颜色导入
- javascript - 在 p5.js 方法中调整窗口大小
- java - 属性中的 Spring Boot 和 Keycloak 配置引发 NullPointerException 然后 500 状态代码
- spring - 当来自同一主机的相同 url 的 curl 工作正常时,为什么 Spring RestTemplate.getForObject() 到 localhost 会得到 404?
- django - 如何根据条件增加和减少 django Templete 中的值
- flutter - Flutter:使用 Azure AD B2C 进行身份验证返回结果,但访问令牌为空
- javascript - JS:如何在特定单词和一定数量的字符之后提取子字符串?
- ios - 构建中的“不支持的 swift 版本”(ARKit + Reality Composer)