Php 获取不同的名称首先在字符串中用括号分解,而不是在mysql中排序
查询前我的表 我的问题Php 获取不同的名称首先在字符串中用括号分解,而不是在mysql中排序,php,mysql,Php,Mysql,查询前我的表 我的问题 <?php $sql="SELECT distinct(SUBSTRING(name,1,instr(name,'(')-1)), pid,sort_order from extra GROUP BY (SUBSTRING(name,1,instr(name,'(')-1)) ORDER BY sort_order ASC LIMIT 0,15"; ?> 因此,如果您希望产品具有最小排序顺序,且以相同的3个Letter开始 SELECT ex
<?php $sql="SELECT distinct(SUBSTRING(name,1,instr(name,'(')-1)), pid,sort_order from extra GROUP BY (SUBSTRING(name,1,instr(name,'(')-1)) ORDER BY sort_order ASC LIMIT 0,15"; ?>
因此,如果您希望产品具有最小排序顺序,且以相同的3个Letter开始
SELECT
ext.*
FROM extra ext
INNER JOIN (
-- this query return the sub_name with the min_order for that sub_name
SELECT
distinct(SUBSTRING(name,1,instr(name,'(')-1)) as 'sub_name',
min(sort_order)
from extra
group by sub_name
) min_extra on SUBSTRING(extname,1,instr(ext.name,'(')-1) = min_extra.sub_name
ORDER BY ext.sort_order ASC LIMIT 0,15";
我通过这个查询得到了解决方案
SELECT SUBSTRING(pp.name,1,instr(pp.name,'(')-1),(select e.pid from extra as e where SUBSTRING(e.name,1,instr(pp.name,'(')-1)=SUBSTRING(pp.name,1,instr(pp.name,'(')-1) order by e.sort_order asc limit 1) as pid from extra as pp group by SUBSTRING(name,1,instr(name,'(')-1) order by pp.sort_order asc
使用group by时,需要在两个字段pid上执行aggrecate函数,排序顺序您需要的确切数字是以相同的三个字母开头的名称数?我需要唯一的字符串名称按排序顺序ASC排序,然后显示结果。编辑您的问题并解释为什么pid=3和7,因为7是以yyy开头的名称的最大值,但3不是最大值。请查看“名称”开始列和xxx。当我运行我的查询时,有4种产品,它给了我第一种产品,但我要求产品xxx,排序顺序将是2,即ASC的订单。我只是假设您想要什么,但您可以编辑查询以获得您想要的