我将我的数据库分为 8 个部分,其中每个部分都包含带有表 user_data 的数据库,为了更好的搜索性能,我使用 sphinx 来索引所有这些数据,但我遇到了一个问题......因为表 user_data 没有任何唯一字段代表每一行,但它是一个一对多的表,我无法正确运行我的 sphinx 索引,因为它需要唯一的 id 并且这种方式解析重复的 id ...知道我该如何解决这个问题吗?还是通过来自不同段的所有子索引生成唯一 ID?
例子:
SELECT user_id, item_id, info
FROM user_data
返回的内容如下:
+----------+-----------------------+
| user_id | item_id | info |
+----------+-----------------------+
| 10 | 151 | asdf |
| 10 | 152 | test |
| 11 | 151 | 545 |
| 12 | 151 | sdfsd |
| 12 | 152 | eewwe |
| 12 | 153 | dfsd |
但我必须得到
+----------+-----------------------------+
| user_id | item_id | info | id |
+----------+-----------------------------+
| 10 | 151 | asdf | 1 |
| 10 | 152 | test | 2 |
| 11 | 151 | 545 | 3 |
| 12 | 151 | sdfsd | 4 |
| 12 | 152 | eewwe | 5 |
| 12 | 153 | dfsd | 6 |
当然 id 在所有段中必须是唯一的
最佳答案
首先你应该在操作查询之前设置你的变量
sql_query_pre = SET @a := 1;
然后使用这个变量来获得虚构的自增
sql_query = SELECT @a := @a + 1 AS id, user_id, item_id, info FROM user_data
关于mysql sphinx 生成唯一id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884209/