gpt4 book ai didi

php - 按添加的 WHERE 条件的顺序对 SQL 输出进行排序

转载 作者:行者123 更新时间:2023-11-29 13:36:59 25 4
gpt4 key购买 nike

如何通过外部条件或例如对 SQL 输出中的值进行排序添加 WHERE 条件的顺序?

首先,我使用“json_decode foreach 循环”生成多个 ID

$itemid = '';
$arr = json_decode($string,true);
foreach($arr['feed']['entry'] as $val)
{
$itemid .= " OR `item_id` = ".$val['id']['att']['ix:id'];
}

输出例如(简化)

`item_id` = 2
OR `item_id` = 3
OR `item_id` = 1

这里输出的顺序对我来说很重要。 2是第一个位置的ID,3是第二个位置的ID,依此类推。

在下一步中,我使用 MySQL 语句中的所有 ID 来提取每个 ID 的信息

$sql = "
SELECT *
FROM `itemtable`
WHERE $itemid
";

哪个更具可读性:

$sql = "
SELECT *
FROM `itemtable`
WHERE `item_id` = 2
OR `item_id` = 3
OR `item_id` = 1
";

SQL 输出现在按 ID ASC 的顺序排列

+-------+-----------+
| ID | INFO |
+-------+-----------+
| 1 | something |
+-------+-----------+
| 2 | something |
+-------+-----------+
| 3 | something |
+-------+-----------+

但我需要按 json_decode 生成 ID 的顺序排列信息:

+-------+-----------+
| ID | INFO |
+-------+-----------+
| 2 | something |
+-------+-----------+
| 3 | something |
+-------+-----------+
| 1 | something |
+-------+-----------+

我在同一 PHP 脚本中使用另一个 foreach 循环输出接收到的数据:

$output = '';
foreach ($xpdo->query($sql) as $row) {
$output .= $row['ID']
.$row['INFO']
."</br>";
}
return $output;

如何将输出按 json_decode 的顺序获取?实际上我不介意排序发生在 SQL 语句还是 PHP 中。

编辑:Fluffeh 的解决方案

将 json_decode 修改为+为第一个条目添加 IF 条件,以删除此处的“union all”。

$itemid = '';
$arr = json_decode($string,true);
foreach($arr['feed']['entry'] as $val)
{
$itemid .= "union all
SELECT * FROM `itemtable`
WHERE `item_id` = ".$val['id']['att']['ix:id'];
}

最佳答案

从技术上来说你不能,但如果查询不是太糟糕,你可以编写一些代码来做到这一点:

$sql = "
SELECT *
FROM `itemtable`
WHERE $itemid1
union all
SELECT *
FROM `itemtable`
WHERE $itemid2
";

如果您使用一些 PHP 将查询连接在一起,它将非常容易地工作。

当您运行联合查询时,数据将按照查询本身的顺序返回。

关于php - 按添加的 WHERE 条件的顺序对 SQL 输出进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18609325/

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