gpt4 book ai didi

sql - 使用 ORDER BY 对数据进行排序

转载 作者:行者123 更新时间:2023-12-04 20:05:22 28 4
gpt4 key购买 nike

这是我要排序的数据。

AAAAAAAA    0.0.0.0   hs01.stuff.net
BBBBBBBB 0.0.0.0 hs01.morestuff.net
CCCCCCCC 0.0.0.0 hs01.evenmorestuff.net
DDDDDDDD 0.0.0.0 hs01.stuff.net
EEEEEEEE 0.0.0.0 hs01.stuff.net
FFFFFFFF 0.0.0.0 hs01.evenmorestuff.net
GGGGGGGG 0.0.0.0 hs01.stuff.net
HHHHHHHH 0.0.0.0 hs01.evenmorestuff.net

这是 ORDER BY 的结果:

AAAAAAAA    0.0.0.0   hs01.stuff.net
BBBBBBBB 0.0.0.0 hs01.morestuff.net
CCCCCCCC 0.0.0.0 hs01.evenmorestuff.net
DDDDDDDD 0.0.0.0 hs01.stuff.net
EEEEEEEE 0.0.0.0 hs01.stuff.net
FFFFFFFF 0.0.0.0 hs01.evenmorestuff.net
GGGGGGGG 0.0.0.0 hs01.stuff.net
HHHHHHHH 0.0.0.0 hs01.evenmorestuff.net

相同的输出,所以出了点问题。

这是我目前尝试过的

$dbh_source2 = DBI->
connect("dbi:Oracle:host=????;port=????;sid=????",'????','????');

$SEL = "SELECT DISTINCT
PE_LOOPBACK_IP,
PE_FQDN
FROM TABLE_NAME
WHERE SITE_NAME = ?
ORDER BY PE_FQDN";

$sth = $dbh_source2->prepare($SEL);

这不起作用并且不会按名称对最后一列进行排序。 ORDER BY 是否只根据第一个字符排序?名称中的数字是否导致它失败?

这是我用来显示数据的代码:

print '<table border=1>';
print '<tr>';
print '<th>Tower name</th>';
print '<th>SUR IP</th>';
print '<th>SUR FQDN</th>';
print '</tr>';
foreach my $data_line (@raw_data) {
chomp $data_line;

$sth->execute($data_line);

while (my @row = $sth->fetchrow_array ) {
#Print data into cells#
print "<tr>";
print "<td>$data_line</td>";
foreach (@row) {
print "<td>$_</td>";
}
print "</tr>";
#print "<$data_line>\t @row\n";

}
}
print "</table>";

最佳答案

这不是 SQL!

perl 代码显示了两个循环。

为@raw_data 数组中的每个条目遍历外层循环。每个@raw_data 'record' 的值作为 SITE_NAME 参数传递给 SELECT 语句。

您正在执行多个 SELECT 语句,每个不同的站点一个。每个单独的 SELECT 返回一个有序的行集,但它们都为单个站点返回单个行。驱动输出顺序的是@raw_data 数组中站点名称的顺序。

<-------------------------------------------- -------------------------->完全误导的旧条目。

我将提供一些可能性。

(1) 这是一个错误。 DISTINCT 通常但不一定会进行排序以删除重复项。由于某种原因,它可能已经确定 ORDER BY 是冗余的,因为选择了查询计划。

要确定这一点,请检查查询计划。 EXPLAIN PLAN 最简单,但最好将 DBMS_XPLAN.DISPLAY_CURSOR 与来自 v$sql 的 sql_id 一起用于该 SQL。

(2) 正在对数据进行排序,但某些原因导致排序顺序与您预期的不同。尝试用 DUMP(PE_FQDN) PE_FQDN 替换 PE_FQDN。这将显示它实际使用的字节数。

(3) SELECT 与您所说的不完全相同。例如

SELECT FRED BILL, BILL BILL_TOO
FROM table
ORDER BY BILL

实际上将按别名为 BILL 的列(即 FRED 列)排序,而不是按 BILL 列排序。

SELECT FRED, BULL
FROM table
ORDER BY 'FRED'

将按字符串 'FRED' 排序,而不是 FRED 列中的值(并且由于所有内容都按相同的值排序,因此它实际上不会执行任何操作)。

<-------------------------------------------- -------------------------------------->

关于sql - 使用 ORDER BY 对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317803/

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