我有一个包含以下格式行的表格:
transactionDate, purchaseOrderId
8/8/2012, 55
8/9/2012, 55
8/8/2012, 88
8/9/2012, 55
8/10/2012, 77
Run Code Online (Sandbox Code Playgroud)
我想找到 transactionDate 和 purchaseOrderId 都准确的所有行。所以以下两行是重复的:
8/9/2012, 55
8/9/2012, 55
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下查询:
SELECT
transactionDate, purchaseOrderId
FROM
purchases
GROUP BY
transactionDate, purchaseOrderId
HAVING COUNT(*) > 1;
Run Code Online (Sandbox Code Playgroud)
但是,除了 8 月 9 日的结果之外,它还返回了 8 月 8 日的结果。如何使它只返回两列重复的字段(而不是返回每个日期的所有交易)?
谢谢。
我正在使用休眠,并且我有两个表(遗留的,它们无法重组),如下所示
表A
@Entity
@Table(name = "tableA")
public Class TableA implements Serializable {
@EmbeddedId private TableAId tableAId;
@OneToOne(mappedBy = "tableA")
private TableB tableB;
// getters, setters, hashCode and equals ommited
}
Run Code Online (Sandbox Code Playgroud)
表A的复合ID
@Embeddable
public class TableAId implements Serializable {
protected int id1;
protected String id2;
protected int id3;
// getters, setters, hashCode and equals ommited
}
Run Code Online (Sandbox Code Playgroud)
表B
@Entity
public class TableB implements Serializable {
@OneToOne
@JoinColumn(name = "tableB", referencedColumnName = "id3")
protected TableA tableA;
// getters, setters, hashCode and equals ommited …Run Code Online (Sandbox Code Playgroud) 我有一张表:student_homework,其复合索引之一是uk_sid_lsnid_version(student_id, lesson_id, curriculum_version, type):
student_homework 0 uk_sid_lsnid_version 1 student_id A 100 BTREE
student_homework 0 uk_sid_lsnid_version 2 lesson_id A 100 BTREE
student_homework 0 uk_sid_lsnid_version 3 curriculum_version A 100 BTREE
student_homework 0 uk_sid_lsnid_version 4 type A 100 BTREE
Run Code Online (Sandbox Code Playgroud)
现在我有一个 Sql:
select * from student_homework where student_id=100 and type=1结果explain如下:
1 SIMPLE student_homework ref uk_sid_lsnid_version,idx_student_id_update_time uk_sid_lsnid_version 4 const 20 10.0 Using index condition
Run Code Online (Sandbox Code Playgroud)
执行计划是uk_sid_lsnid_version。
我的问题是查询条件type在这里如何工作?数据库引擎是否扫描所有(缩小的)记录?根据我的理解,树形层次结构是:
student_id
/ \
lesson_id lesson_id
/ \
curriculum_version curriculum_version
/ …Run Code Online (Sandbox Code Playgroud) 我按照这里的说明,通过安装composite_primary_keys gem
sudo gem install composite_primary_keys
Run Code Online (Sandbox Code Playgroud)
这工作得很好.现在,当我将以下内容添加到我的模型中时
set_primary_keys :user_id, :group_id
Run Code Online (Sandbox Code Playgroud)
我明白了
undefined method `set_primary_keys' for #<Class:0x1043bfe20>
Run Code Online (Sandbox Code Playgroud)
此外,如此处所述,在迁移中使用多个主键无效.
任何想法为什么这可能不起作用以及如何使其工作?
注:我没有想为什么我不应该使用组合键来讲话-我已经下定了决心,只是希望得到这个工作.谢谢!
我正在玩EntityFramework CTP4并决定将它应用于我当前的一个项目.该应用程序使用SQLServer数据库,并且有一个表具有复合键.比如,表"MyEntity"将"Key1"和"Key2"作为外键(单独)和复合主键.
我创建了一个从EntityConfiguration派生的配置类:
class MyEntityConfiguration : EntityConfiguration<MyEntity>
{
public MyEntityConfiguration()
{
HasKey(m => m.Key1);
HasKey(m => m.Key2);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的DataContext(从DbContext派生):
public DbSet<MyEntity> MyEntities { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new MyEntityConfiguration());
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我查询"MyEntities"的所有记录时:
var entities = from e in MyModel.Instance.MyEntities
select e;
Run Code Online (Sandbox Code Playgroud)
我得到一个非常奇怪的结果,包括重复18次的第一个记录,然后第二个重复18次(记录,我的表有36个记录).
我怀疑问题在于复合键,因为没有其他实体显示此问题.
任何帮助将不胜感激,谢谢:)
我正在努力学习SQL语句.
我想在具有复合主键的表中更新除某些行之外的所有行.
这就是我现在所做的:
UPDATE Products SET Active = 0
Run Code Online (Sandbox Code Playgroud)
_
UPDATE Products SET Active = 1
WHERE (Id_A = 1 AND Id_B = 1 AND Id_C = 1) OR
(Id_A = 1 AND Id_B = 2 AND Id_C = 1) OR
(Id_A = 5 AND Id_B = 8 AND Id_C = 3) OR
.
.
.
etc
Run Code Online (Sandbox Code Playgroud)
这有效,但我不喜欢它.我希望能够一次性去做.
有没有办法在SQL中执行此操作?
我正在使用mysql server.where我创建了一个名为question的表.这个表的列/属性是(课程,主题,年份,问题)我想创建一个主键(或复合键)由(课程+主题+年)组成.即对于特定的课程+主题+年组合,只能有一个问题.只有一行与(课程+主题+年)的组合,创建另一行是不可能的.我做到了:
primary key(course,subject,year);
Run Code Online (Sandbox Code Playgroud)
但它不工作.我可以创建两行,当然,主题,年份相同的组合.
任何人都可以告诉我,我怎么能创建一个复合键propery ????
这就是我的表格:
CREATE TABLE pics(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
page INTEGER,
w INTEGER,
h INTEGER,
FOREIGN KEY(page) REFERENCES pages(id) ON DELETE CASCADE,
UNIQUE(name, page)
);
CREATE INDEX "myidx" ON "pics"("page"); # is this needed?
Run Code Online (Sandbox Code Playgroud)
所以UNIQUE(name, page)应该创建一个索引.但是这个索引是否足以进行page仅涉及该字段的快速查询?就像选择一组"照片"一样WHERE page = ?.还是JOIN pages.id ON pics.page?或者我应该只为页面字段创建另一个索引(myidx)?
我正在使用MEM_FUN检查这个 Boost multi_index复合键
有人能告诉我如何为这个例子实现擦除功能吗?
现在我在做
Name_set_by_last::iterator mitchells = names.get<last>().find("mitchell");
names.erase(mitchells );//shows error
Run Code Online (Sandbox Code Playgroud) 如何在Jooq中基于复合键查询实体?例如:
UserAttempts org.jooq.impl.DAOImpl.findById(Record2<UInteger, String> id)
Run Code Online (Sandbox Code Playgroud)
id是一个复合键.怎么用Record2<UInteger, String>?