我有一个mysql查询,显示用户上次查看的文档。某种历史记录视图,我想在“历史记录”选项卡中显示它,但是我无法使其正常工作。
历史记录保存在另一台服务器上,因此我要获取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值进行联接。IE:
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