php - 首先通过 rand 获取 mysql 特色项,然后通过 asc 获取其他项

标签 php mysql sql

我需要帮助。我需要从DB第一个三项其中feature= 1(按兰特)获取数据,然后按升序获取其他项目

假设我有 50 个项目,其中 10 个项目是特色项目。现在我需要从 10 个特色商品中按兰特获取第 1 个 3。然后按升序排列其他 40 项。

我希望它们出现在一个查询中

可能吗?

最佳答案

您可以运行多个查询。一种获得特色元素,一种获得常规元素。

$featured = $mysql->query("
    SELECT *
    FROM items
    WHERE featured = 1
    ORDER BY RAND()
    LIMIT 10
");
$ordinary = $mysql->query("
    SELECT *
    FROM items
    WHERE featured = 0
    ORDER BY create_date
    LIMIT 40
");

如果出于某种原因您需要在单个查询中使用它,可以使用以下方法:

(
    SELECT *
    FROM items
    WHERE featured = 1
    ORDER BY RAND()
    LIMIT 10
) UNION (
    SELECT *
    FROM items
    WHERE featured = 0
    ORDER BY create_date
    LIMIT 40
)

关于php - 首先通过 rand 获取 mysql 特色项,然后通过 asc 获取其他项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587571/

相关文章:

sql - 从不同的表中获取 XML

c# - GetSqlValues 是否获取隐藏字段?

php - 使用 PHP 的 jQuery 自动建议

php - laravel 中的 mergeBindings 是什么意思

mysql - 数据从本地MySQL迁移到RDS for MySQL

java - JDBC 类未找到异常

sql - 读取嵌套 JSON 返回 NULL

php - 不正确的整数值 SQL 错误

php - 如何停止重复输入数据库

mysql - Google Analytics Reporting API 与查询参数