我正在运行以下MySQL查询来查找没有手册(并且有黑色轮子等)的汽车
SELECT `cars`.* FROM `cars`
INNER JOIN wheels ON cars.id = wheels.car_id
LEFT OUTER JOIN manuals ON cars.id = manuals.car_id
WHERE (cars.created_at > '2010-09-09'
AND wheels.color = 'Black'
AND wheels.created_at < '2011-01-05'
AND manuals.car_id IS NULL)
Run Code Online (Sandbox Code Playgroud)
查询的结果看起来是正确的,但它返回id为27的汽车两次.如何更改查询以使所有结果都是唯一的(无重复)?
我有一个包含Value ID和Value的表
--------------
| id | value |
--------------
| 1 | NULL |
--------------
| 1 | A |
--------------
| 2 | NULL |
--------------
| 2 | NULL |
--------------
| 3 | B |
--------------
| 3 | B |
--------------
| 3 | B |
--------------
Run Code Online (Sandbox Code Playgroud)
我需要从表中选择不同的id和相应的值.选择Id时应该是唯一的,如果它在值字段中有多个值,则它应该只检索非NULL值
所以结果应该如下.
--------------
| id | value |
--------------
| 1 | A |
--------------
| 2 | NULL |
--------------
| 3 | B |
--------------
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?使用SQL Server …
我想只在iPhone中的核心数据中插入那些尚未存在于sqllite表中的记录.换句话说,我想在核心数据表中插入不同的记录.我的插入代码是
for(NSInteger j=0;j<[items count];j++){
Story *story=(Story *)[NSEntityDescription insertNewObjectForEntityForName:@"Story" inManagedObjectContext:managedObjectContext];
[story setTitle:[[items objectAtIndex:j] objectForKey:@"title"]];
[story setDate:[[items objectAtIndex:j] objectForKey:@"date"]];
}
Run Code Online (Sandbox Code Playgroud)
告诉我在这里只插入不同记录的方法.
我有以下R代码:
library(ggplot2)
data(diamonds)
by(diamonds$price, diamonds$cut, summary)
by(diamonds$price, diamonds$cut, max)
Run Code Online (Sandbox Code Playgroud)
这给了我:
diamonds$cut: Fair
Min. 1st Qu. Median Mean 3rd Qu. Max.
337 2050 3282 4359 5206 18570
----------------------------------------------
diamonds$cut: Good
Min. 1st Qu. Median Mean 3rd Qu. Max.
327 1145 3050 3929 5028 18790
----------------------------------------------
diamonds$cut: Very Good
Min. 1st Qu. Median Mean 3rd Qu. Max.
336 912 2648 3982 5373 18820
----------------------------------------------
diamonds$cut: Premium
Min. 1st Qu. Median Mean 3rd Qu. Max.
326 1046 3185 4584 6296 18820
----------------------------------------------
diamonds$cut: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从视图中将唯一值插入到表中。我有一张如下表:“fromView”在护照中没有唯一约束
id | passport | name | surname | address
1 44543 John Smith xxxxx
2 10001 Mike Thomps avasfa
3 10001 Mike Thomps avasfa
4 10001 Mike Thomps avasfa
5 14221 Robert Martinez lkjij3
Run Code Online (Sandbox Code Playgroud)
我的“toTable”具有相同的数据结构,但在护照列中有一个唯一的约束。
我的插入查询是这样的:
INSERT into toTable (id, passport, name, surname, address)
SELECT (id, passport, name, surname, address)
FROM fromView a
WHERE passport IS NOT NULL AND NOT EXISTS (SELECT *
FROM toTable b
WHERE b.passport = a.passport)
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:
无法在具有唯一索引“toTable_Passport_Unique”的对象“toTable”中插入重复的键行。
所以,我不知道如何将唯一值插入到我的表中。提前致谢
我需要你的帮助.我试图从对象列表中获取不同的值.我的班级看起来像这样:
class Chromosome
{
public bool[][] body { get; set; }
public double fitness { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我有List<Chromosome> population
.现在我需要的是一种方式,我如何获得新的清单:List<Chromosome> newGeneration
.这个新列表将只包含原始列表中的唯一染色体 - 种群.
我一直在使用 morelinq 创建一个不同的对象列表。我的对象有大约 20 个属性,在最终列表中没有一个是唯一的。然而,两个属性一起使用可以揭示独特的对象:
父 ID | 儿童 ID
我看到这个问题并认为这是同样的问题所以我下载了morelinq并尝试使用:
list = list.DistinctBy(c => new { c.id, c.parentid }).ToList();
Run Code Online (Sandbox Code Playgroud)
然而,这会导致在 EITHER 属性上有一个不同的列表,而不是两者(所以我只会看到每个父母一个孩子)
使用 morelinq 实现这一目标的正确方法是什么?
我需要按日期范围为已登录的用户制作一份报告,但在同一天没有重复(如果有人在同一天登录两次,我们不会将其列出两次)。不幸的是,我们将登录信息保留为json(是的,我无法将其更改为单独的表,我不知道这个db是谁设计的)。查询以查看所有登录的用户:
select a.id, username, email, ah.modified as login_date
from accounts a join
account_history ah
on modified_acc_id = a.id
where ah.data::jsonb->>'message' = 'Logon';
Run Code Online (Sandbox Code Playgroud)
修改为带时区的时间戳,用作登录日期。
我只找到了每天计数不同 id 的示例,但我不知道如何修改它以每天返回不同的结果
样本数据:
id | username | email | login_date
-----+-------------------------+---------------------------------+----------------------------
102 | example | example@example.com | 2018-12-06 09:30:10.573+00
102 | example | example@example.com | 2018-12-06 09:32:34.235+00
42 | rafal | rafal@example.com | 2018-12-06 09:45:24.884+00
576 | john | john@example.com | 2018-12-06 09:35:24.922+00
576 | john | john@example.com | 2018-12-07 09:58:04.253+00
Run Code Online (Sandbox Code Playgroud)
想要的数据:
id | username | …
Run Code Online (Sandbox Code Playgroud) 我使用此 lambda 函数从数据框中获取所有不同值的概述:
overview = df.apply(lambda col: col.unique())
Run Code Online (Sandbox Code Playgroud)
它返回所需的结果,如下所示:
ColA [1,2,3,...]
ColB [4,5,6,7,8,9...]
ColC [A,B,C]
... ...
Run Code Online (Sandbox Code Playgroud)
如何使用子图/多个条形图可视化此结果?
我的第一次尝试只是将对象扔进数据框的绘图方法中,这显然不起作用。所以我尝试从对象中创建一个数据框:
overview = {}
for attr, value in overview.iteritems():
overview[attr] = value
df = pd.DataFrame(overview)
Run Code Online (Sandbox Code Playgroud)
输出是:
ValueError: arrays must all be same length
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用一个列表:
overview = []
for attr, value in obj_overview.iteritems():
overview.append({attr: value})
df = pd.DataFrame(overview)
Run Code Online (Sandbox Code Playgroud)
但结果是一个交叉矩阵,其行数与列数相同,并且第 n 行引用第 n 列。这也是错误的。
如何使用显示数据框不同值的多个条形图/子图来获得概览?
事实上,我想实现两个可能的目标:
谢谢!
我有一个像这样的简单代码
import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamSupplierVersusConcat {
public static void main(String[] args) {
final StreamSupplierVersusConcat clazz = new StreamSupplierVersusConcat();
clazz.doConcat();
}
private void doConcat(){
System.out.println(Stream.concat(buildStreamFromRange(0,1000).get()
,buildStreamFromRange(1000,2000).get())
.anyMatch("1"::equals));
}
private Supplier<Stream<String>>buildStreamFromRange(final int start,final int end){
return ()->IntStream.range(start, end)
.mapToObj(i->{
System.out.println("index At: "+i);
return String.valueOf(i);
});
}
}
Run Code Online (Sandbox Code Playgroud)
我知道 concat 是懒惰的,所以当我运行代码时,我看到它只生成了 2 个很棒的值,但知道 distinct 是一个有状态的操作,我认为将该方法放在 Stream 管道上它会生成所有值,然后做 anyMatch 方法,但如果我这样说
private void doConcat(){
System.out.println(Stream.concat(buildStreamFromRange(0,1000).get()
,buildStreamFromRange(1000,2000).get())
.distinct()//ARE ALL THE VALUES GENERATED NOT REQUIRED HERE???
.anyMatch("1"::equals));
}
Run Code Online (Sandbox Code Playgroud)
但是有了不同的和没有它,我得到了相同的回应。
index At: 0 …
Run Code Online (Sandbox Code Playgroud)