gpt4 book ai didi

php - mySQL - 如何根据指定列是否包含指定值来列出行?

转载 作者:行者123 更新时间:2023-11-28 23:20:58 26 4
gpt4 key购买 nike

我想根据行是否包含值来列出。这意味着,具有指定值的行应该排在第一位。这是表结构;

------------------
|id|name|grades|
------------------
|1|john|,35,,68,,95,|
------------------
|2|Stefan|,54,,66,,29,|
------------------
|3|Lincoln|,88,,100,,28,|
------------------
|4|Hubert|,15,,67,,29,|
------------------
|5|Lucifer|,24,,66,,47,|
------------------

我想首先列出 grades 列中包含 66 的行。到目前为止,我已经尝试过了;

SELECT * FROM students ORDER BY FIELD (grades,'66'), name DESC limit 10

但不幸的是,它没有按预期列出行。正确的做法是什么?

最佳答案

FIELD(grades, '66') 将整个 grades 列与 66 进行比较,它不会将其拆分并查找个人值(value)观。您需要使用 FIND_IN_SET 来确定逗号分隔列表是否包含值。

SELECT * FROM students
ORDER BY FIND_IN_SET('66', grades) = 0, name DESC
LIMIT 10

FIND_IN_SET 返回逗号分隔列表中的位置,如果未找到则返回 0。因此,添加 = 0 将在找到成绩时生成 0,如果未找到则生成 1

顺便说一句,将逗号分隔的列表放在表格列中通常是糟糕的设计。您应该使用单独的表格,每个值对应一行。

关于php - mySQL - 如何根据指定列是否包含指定值来列出行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41599747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com