我有一个 mysql 查询,显示用户最后查看的文档。某种历史 View ,我想在历史选项卡中显示它,但我无法让它工作。
历史保存在另一台服务器上,所以我得到了一个 ID 列表,我必须从文档数据库中获取文档的信息。我希望它显示历史记录中的重复条目(目前不起作用)
我已经尝试了多种方法来使其正常工作,但我得到的只是获取最后 25 个在 id 字段上使用 DISTINCT 选择的文档,但我也想获取重复项。
这是我正在使用的查询(填充了示例数据)
SELECT
stuff_from_table
FROM
a_secret_table
WHERE
`id`
IN ( 6176, 6176, 6176, 3091, 3454, 5927, 5929, 5938, 1975, 177, 6123, 5943, 4325, 4326, 4327, 6176, 4327, 1990, 3400, 2650, 2649, 2649, 6176, 4297, 6145 )
ORDER BY FIND_IN_SET( id, '6176, 6176, 6176, 3091, 3454, 5927, 5929, 5938, 1975, 177, 6123, 5943, 4325, 4326, 4327, 6176, 4327, 1990, 3400, 2650, 2649, 2649, 6176, 4297, 6145')
LIMIT 0 , 25
此代码有效,但不会返回任何重复项。它只会返回 17 个结果,因为它忽略了重复项。
任何人都知道如何让这个查询也返回重复项?还是我必须在 php 中手动添加缺少的?
提前致谢!
最佳答案
而不是使用 IN
子句,您需要加入 id
值。即:
SELECT t.stuff
FROM YOUR_TABLE t
JOIN (SELECT 6176 AS tid,
UNION ALL
SELECT 6176
UNION ALL
SELECT 6176
UNION ALL
SELECT 3091) x ON x.tid = t.id
ORDER BY FIND_IN_SET(t.id, '6176, 6176, 6176, 3091')
LIMIT 25
您需要将该逗号分隔的列表拆分为具有单列的表格 - 请参阅:http://forge.mysql.com/tools/tool.php?id=4
关于sql - Mysql 查询返回带有 in 和 find_int_set 的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596790/