gpt4 book ai didi

MYSQL DISTINCT ORDER BY 没有给出正确的顺序

转载 作者:行者123 更新时间:2023-11-29 00:50:00 28 4
gpt4 key购买 nike

更新:谢谢大家,现在这个查询一切正常 100%:

SELECT e.entry_id
FROM exp_channel_titles AS e
INNER JOIN exp_matrix_data AS m ON m.entry_id = e.entry_id
WHERE e.channel_id = 2
GROUP BY e.entry_id
ORDER BY MIN(m.col_id_2) ASC

这是我的代码。

来自 .home_laagste_rentes 的代码

{exp:channel:entries dynamic="no" fixed_order="0{embed:entry_ids}" disable="member_data|pagination|categories"}
<tr class="{switch="odd|even"}">
<td><a href="#" title="{title}">{title}</a></td>
<td>{dk:lowest col="rente" decimals="2" dec_point=","}%</td>
<td>{count}</td>
</tr>
{/exp:channel:entries}

页面代码:

<table id="rowspan" cellspacing="0" class="tablesorter">
<thead>
<tr>
<th>Krediet aanbieder</th>
<th>Rente</th>
<th>Beoordeling</th>
</tr>
</thead>
<tbody>
{embed="embeds/.home_laagste_rentes"
entry_ids="{exp:query sql="
SELECT DISTINCT (e.entry_id)
FROM exp_channel_titles AS e
INNER JOIN exp_matrix_data AS m ON m.entry_id = e.entry_id
WHERE e.channel_id = 2
ORDER BY m.col_id_2 ASC
"}|{entry_id}{/exp:query}"}
</tbody>

col_id_2 设置为 decimal(10,4)

entry_id 设置为 int

这是在过滤重复项,但没有给出正确的顺序。看起来过滤重复项是随机完成的......请参阅此链接以获取输出: http://postimage.org/image/9vzahuuez/

最佳答案

对于一个 e.entry_id,您有许多可能不同的 m.col_id_2 值。

您的查询甚至不是有效的 ANSI SQL,因为 ORDER BYDISTINCT 之后计算,所以 ORDER BY m.col_id_2 应该创建一个错误(如果您的 MySQL 设置是严格的 ANSI SQL)。

解决方案是使用 GROUP BY 而不是 SELECT DISTINCT 来说明应该使用哪个值进行排序:

SELECT e.entry_id
FROM exp_channel_titles AS e
INNER JOIN exp_matrix_data AS m ON m.entry_id = e.entry_id
WHERE e.channel_id = 2
GROUP BY e.entry_id
ORDER BY MAX(m.col_id_2) ASC --- or MIN(), or AVG()

关于MYSQL DISTINCT ORDER BY 没有给出正确的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952778/

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