我需要选择所有具有非重复ID的数据。 这是我的样本表..
----------------------------------------------------------------------------------
ID | Zip-Code | Search Query | ID_LIST
----------------------------------------------------------------------------------
1 | 1000 | Query Sample 1 | 13,14,15,
----------------------------------------------------------------------------------
2 | 2000 | Query Sample 2 | 16,13,17,
----------------------------------------------------------------------------------
3 | 3000 | Query Sample 3 | 18,17,13,
----------------------------------------------------------------------------------
4 | 4000 | Query Sample 4 | 15,16,17,18,
----------------------------------------------------------------------------------
5 | 5000 | Query Sample 5 | 19, 20,
你可以注意到ID 1和2有重复,在ID_LIST
上是132和3也有重复,即13和17。
我想做的就是这样......
----------------------------------------------------------------------------------
ID | Zip-Code | Search Query | ID_LIST
----------------------------------------------------------------------------------
1 | 1000 | Query Sample 1 | 13,14,15,
----------------------------------------------------------------------------------
2 | 2000 | Query Sample 2 | 16,17,
----------------------------------------------------------------------------------
3 | 3000 | Query Sample 3 | 18,
----------------------------------------------------------------------------------
5 | 5000 | Query Sample 5 | 19,20,
什么查询对此有用?任何帮助?
答案 0 :(得分:0)
最好的方法是normalize
您的数据,如评论中所述。但是如果你绝对必须这样做,那么在查询mysql时会非常困难。
我建议你为它创建一个程序。当您开发每个步骤时,您可以谷歌该步骤的特定解决方案,并测试它并在此基础上进行构建。如果任何步骤混淆/不清楚,请告诉我。
v_vals
。初始化为null。在程序结束时,它将包含id_list
的所有不同值(13
,14
... 20
)id_list
中的逗号数。substring
和instring
查找每个逗号的位置,然后从id_list
中提取值。 (13
,14
...)v_id_list
。将null放入其中。 v_vals
中搜索值(来自步骤5)。如果它们存在于v_val
中,则跳过它们,否则将它们放入v_val
和v_id_list
。 id_list
更新v_id_list
。现在为每一行重复步骤3
至8
。
v_id_list
将针对每个循环重新初始化,但v_val
将包含id_list
的所有不同值。