SQL排序列表,但在PHP中将特定元素放在第一位



我想使用收到的日期或赞成票对图像列表进行排序。还可以使用打开的图像的链接,例如www.mywebsite.com/images?selected=73723.jpg在其他排序术语仍然适用的情况下直接打开图像。

所选图像应该是第一个元素,但之后应再次按日期或投票排序,就像往常一样。这是我所拥有的:

$sortingstring = "image_uploads.UPVOTES DESC"; // <-- order by upvote
$sortingstring = "image_uploads.THMPATH = '".$selectedCode."'"; // <-- selected image
$query = "SELECT * FROM test_users, image_uploads ORDER BY " . $sortingstring;

在此示例中,我们可以看到用于点赞排序和过滤掉所选图像的代码。如何将按点赞排序并首先显示所选图像结合起来,无论我尝试什么似乎都不起作用?

也许你可以用 FIELD 函数来做到这一点,就像这样

ORDER BY FIELD(image_uploads.THMPATH, "your code") DESC, image_uploads.UPVOTES DESC

这是一个简单的例子

CREATE TABLE `items` (
`id` int(11) NOT NULL,
`sort_field` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `items` ADD PRIMARY KEY (`id`);
INSERT INTO `items` (`id`, `sort_field`) VALUES
(1, 1),
(2, 3),
(3, 2);

查询

SELECT * FROM items ORDER BY FIELD(items.id, 1) DESC, sort_field DESC

结果

| id | sort_field |
|----|------------|
|  1 |          1 |
|  2 |          3 |
|  3 |          2 |

最新更新