在mysql表中info我有:
ID,姓名,城市,日期,状态
我想从"info"中选择所有名称进行查询
$query = mysql_query("SELECT name FROM info WHERE status = 1 ORDER BY id")
or die(mysql_error());
while ($raw = mysql_fetch_array($query))
{
$name = $raw["name"];
echo ''.$name.'<br>';
}
Run Code Online (Sandbox Code Playgroud)
好吧,结果是它返回所有条目.我想回复所有条目没有重复.
说:在原始的"名称"下,我们插入了名字"约翰"10次.
我想只回应一次.这可能吗?
我有一个大型数据库(可能在数百万条记录中),文本串相对较短(按街道地址,名称等顺序排列).
我正在寻找一种去除不精确重复的策略,模糊匹配似乎是首选方法.我的问题:许多文章和SO问题涉及将单个字符串与数据库中的所有记录进行匹配.我希望立即对整个数据库进行重复数据删除.
前者是线性时间问题(将值与一百万个其他值进行比较,每次计算一些相似性度量).后者是一个指数时间问题(将每个记录的值与每个其他记录的值进行比较;对于一百万条记录,这与前一个选项的1,000,000次计算相比,大约为5 x 10 ^ 11次计算).
我想知道是否有另一种方法,而不是我提到的"蛮力"方法.我想可能生成一个字符串来比较每个记录的值,然后对具有大致相等的相似性度量的字符串进行分组,然后通过这些组运行暴力方法.我不会达到线性时间,但它可能有所帮助.此外,如果我正确地考虑这一点,这可能会错过字符串A和B之间潜在的模糊匹配,因为它们与字符串C(生成的校验字符串)的相似性尽管彼此非常相似但是非常不同.
有任何想法吗?
PS我意识到我可能在时间复杂度上使用了错误的术语 - 这是一个我基本掌握的概念,但不够好,所以我可以在现场将算法放入适当的类别.如果我使用了错误的术语,我欢迎更正,但希望我至少得到了我的观点.
编辑
一些评论者提出,鉴于记录之间的模糊匹配,我的策略是选择要删除哪些(即给出"foo","boo"和"coo",这将被标记为重复并删除).我应该注意,我不是在寻找自动删除.其目的是在6000万个记录数据库中标记可能的重复数据,以供人工审查和评估之用.如果有一些误报,可以,只要它是一个大致可预测/一致的数量.我只需要了解复制品的普遍程度.但是如果模糊匹配传递需要一个月才能运行,那么这首先不是一个选项.
我的任务是创建一个方法,打印所有索引,其中值x在排序数组中找到.
据我所知,如果我们只是从0到N(数组的长度)扫描数组,它将有一个O(n)最坏情况的运行时间.由于将传递给方法的数组将被排序,我假设我可以利用二进制搜索,因为这将是O(log n).但是,这仅在数组具有唯一值时才有效.由于二进制搜索将在第一次"查找"特定值之后完成.我正在考虑进行二进制搜索以在排序数组中查找x,然后检查此索引之前和之后的所有值,但是如果数组包含所有x值,那么它似乎不会好得多.
我想我要问的是,有没有更好的方法来找到排序数组中特定值的所有索引,这些索引优于O(n)?
public void PrintIndicesForValue42(int[] sortedArrayOfInts)
{
// search through the sortedArrayOfInts
// print all indices where we find the number 42.
}
Run Code Online (Sandbox Code Playgroud)
例如:sortedArray = {1,13,42,42,42,77,78}将打印:"在指数中发现42:2,3,4"
假设我有一个类Event,它有2个属性:action(NSString)和date(NSDate).
假设我有一个Event对象数组.问题是"日期"属性可以匹配.
我需要删除重复项,这意味着具有相同日期的2个不同对象是重复的.
我可以删除任何字符串或nsdates数组中的重复项,它们很容易比较.但是如何使用复杂对象来处理它们的属性呢?
不要问我到目前为止我做了什么,因为我脑子里唯一想到的就是冒泡,但这是一个新手解决方案,而且很慢.
非常感谢任何帮助(链接,tuts,代码).
提前致谢.
编辑
感谢dasblinkenlight,我制作了一个自定义方法:
- (NSArray *)removeDuplicatesInArray:(NSArray*)arrayToFilter{
NSMutableSet *seenDates = [NSMutableSet set];
NSPredicate *dupDatesPred = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind) {
YourClass *e = (YourClass*)obj;
BOOL seen = [seenDates containsObject:e.propertyName];
if (!seen) {
[seenDates addObject:e.when];
}
return !seen;
}];
return [arrayToFilter filteredArrayUsingPredicate:dupDatesPred];
}
Run Code Online (Sandbox Code Playgroud)
这YourClass是对象所属类的名称,并且propertyName是要比较的对象的属性.
假设self.arrayWithObjects包含YourClass的对象.
填充后,使用
self.arrayWithObjects = [self removeDuplicatesInArray:self.arrayWithObjects];
你完成了
所有信用到dasblinkenlight.干杯!
以下每组元素检索操作中的不同方法之间是否存在差异LinkedList?
返回null +删除操作: poll(),pollFirst().
返回null +不删除操作: peek(),peekFirst().
引发异常+删除操作: pop(),remove(),removeFirst().
抛出异常+不删除操作: element(),getFirst().
插入方法中存在类似的重复.
如果没有这样的差异,我希望在方法的javadoc中提到它(类似于旧的"这就像调用......").它只是一个草率的文件,还是我错过了什么?
在我们的系统中,我们从外部数据库运行每小时导入.由于导入脚本中的错误,现在存在一些重复记录.
如果任何记录具有相同的:legacy_id和,则认为副本:company.
我可以运行哪些代码来查找和删除这些重复项?
我正在玩这个:
Product.select(:legacy_id,:company).group(:legacy_id,:company).having("count(*) > 1")
Run Code Online (Sandbox Code Playgroud)
它似乎返回了一些副本,但我不确定如何从那里删除?
有任何想法吗?
sql activerecord ruby-on-rails duplicates rails-activerecord
我在C++中编写此代码作为uni任务的一部分,我需要确保数组中没有重复项:
// Check for duplicate numbers in user inputted data
int i; // Need to declare i here so that it can be accessed by the 'inner' loop that starts on line 21
for(i = 0;i < 6; i++) { // Check each other number in the array
for(int j = i; j < 6; j++) { // Check the rest of the numbers
if(j != i) { // Makes sure don't check number against itself
if(userNumbers[i] == userNumbers[j]) { …Run Code Online (Sandbox Code Playgroud) 我想创建一年的排名(因此在2012年,经理B为1. 2011年,经理B再次为1).我和pandas rank函数挣扎了一段时间,并且不想求助于for循环.
s = pd.DataFrame([['2012','A',3],['2012','B',8],['2011','A',20],['2011','B',30]], columns=['Year','Manager','Return'])
Out[1]:
Year Manager Return
0 2012 A 3
1 2012 B 8
2 2011 A 20
3 2011 B 30
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是附加代码(之前认为这不相关):
s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
s = s.append(b)
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)
raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的DataFrame,有些列有相同的名称.当我尝试选择一个存在两次的列时(例如del df['col name'] 或df2=df['col name'])我得到一个错误.我能做什么?
现在有很多类似的问题,但大多数都回答了如何删除重复的列.但是,我想知道如何创建元组列表,其中每个元组包含重复列的列名.我假设每列都有一个唯一的名称.只是为了进一步说明我的问题:
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [2, 4, 2, 1, 9],
'C': [1, 2, 3, 4, 5],'D': [2, 4, 2, 1, 9],
'E': [3, 4, 2, 1, 2],'F': [1, 1, 1, 1, 1]},
index = ['a1', 'a2', 'a3', 'a4', 'a5'])
Run Code Online (Sandbox Code Playgroud)
然后我想要输出:
[('A', 'C'), ('B', 'D')]
Run Code Online (Sandbox Code Playgroud)
如果你今天感觉很棒,那么也可以将相同的问题扩展到行.如何获取每个元组包含重复行的元组列表.
duplicates ×10
pandas ×3
python ×3
dataframe ×2
java ×2
sql ×2
activerecord ×1
algorithm ×1
arrays ×1
c++ ×1
fuzzy ×1
iphone ×1
javadoc ×1
linked-list ×1
mysql ×1
numpy ×1
objective-c ×1
rank ×1
select ×1
sorting ×1