基本上我想要一个选择ID和版本的select语句,但是每个ID都有多个版本,所以我想选择表中的所有ID以及与每个ID相关联的每个版本。
如果我这样做:
select ID, Version FROM Table
然后我只获得一个ID并且它与最新版本相关联,我没有获得ID = X的多个条目以及与ID X相关联的多个版本等
我想要的数据示例:
ID = 1, Version = 0
ID = 1, Version = 1.0
ID = 1, Version = 2.0
ID = 2, Version = 0
ID = 2, Version = 1.0
ID = 2, Version = 2.0
ID = 2, Version = 3.0
ID = 3, Version = 0
ID = 4, Version = 0
ID = 4, Version = 1.0
etc etc
答案 0 :(得分:0)
就像
一样简单 SELECT ID , Version FROM Table WHERE ID='X'
此处X
是您的身份证号码
答案 1 :(得分:0)
select ID, Version From table
会带来表中的所有数据,我认为该表很大,这就是为什么它看起来不会显示每个id的所有版本,所以请尝试使用Order by。
select ID, Version FROM Table
order by ID, Version
答案 2 :(得分:0)
如果您的表结构包含2列ID(请参阅注释),并且版本AND对于每个行/版本的组合存在一行,则SELECT ID,版本将列出所有行。
e.g。 CREATE TABLE IF NOT EXISTS details (id INTEGER, version TEXT);
它的填充如下: -
然后SELECT id,version from details;
的结果将是: -
或者,如果查询是SELECT 'ID= ' ||id||', Version= ' || version AS vercol FROM details;
,那么(为了满足您展示的结果): -
id INTEGER PRIMARY KEY
或id INTEGER PRIMARY KEY AUTOINCREMENT
)。 如果结构和用法不是基于上述内容,那么您可能会遇到问题。
例如,以下内容存储最新版本(和其他版本): -
然后SELECT id, version FROM details_alt;
将导致您看起来正在描述的内容,即(在此用法中忽略其他版本列): -
要操纵这样的结构并且计算除最高版本之外的其他列或包括其他列将是非常复杂的。例如,这是前者的一部分: -
SELECT
CASE
WHEN version < 1 THEN 'ID= '||id||', Version=0'
WHEN version < 2 THEN 'ID= '||id||' Version=0, 1.0'
WHEN version < 3 THEN 'ID= '||id||' Version=0, 1.0, 2.0'
WHEN version < 4 THEN 'ID= '||id||' Version=0, 1.0, 2.0, 3.0'
END AS idcol
FROM details_alt
并导致: -
简而言之,如果您的表格不是最初显示的结构,看起来就是这种情况,那么您会引入不必要的复杂性,而不是遵循完善的数据库设计技术。
如果不使用初始结构,答案是使用与所示初始设计一致的设计。
否则,您应该修改您的问题,以便在存储实际数据示例时显示表格结构及其使用方式。