Questions tagged «select»

SELECT是一种核心SQL语句,它从一个或多个表或行集数据的其他来源(例如视图或表值函数)中检索数据。

4
如何联接两个表以获取第二个表中缺少的行
在简单的投票系统中 CREATE TABLE elections ( election_id int(11) NOT NULL AUTO_INCREMENT, title varchar(255), CREATE TABLE votes ( election_id int(11), user_id int(11), FOREIGN KEYs 为了获得用户投票的选举列表,使用了以下JOIN SELECT * FROM elections JOIN votes USING(election_id) WHERE votes.user_id='x' 但是如何获取用户未投票的选举列表?
21 join  select 

1
MySQL为表中的每个记录计数来自另一个表的行
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 我正在尝试计算最后一行,但是它计算所有结果并返回一个结果 我收到类似 因为有多个记录,因为K1052280的出勤ID中有两个条目,我想对它们进行计数并返回编号。就像是
21 mysql  select  count 

2
通过子查询选择多列
我正在尝试从以下查询中的子查询中选择2列,但无法这样做。尝试创建别名表,但仍然无法获取它们。 SELECT DISTINCT petid, userid, (SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate, (SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID FROM pet LEFT JOIN comments ON pet.id = comments.petid WHERE userid='ABC' AND deviceID!='ABC' AND comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH); 基本上,我试图从同一行中获取lastComDate&lastPosterID,该行是针对特定宠物的注释中的最新行。请提出如何有效地获取它们的建议。 上面的查询有效,但由于两次获取同一行而显得有些矫kill过正。而且,该ORDER BY子句比聚合函数要慢得多-正如我在分析查询时发现的那样。因此,避免排序的解决方案将不胜感激。

4
如何在一次选择中获得当前和下一个更大的值?
我有一个带有列的InnoDB表'idtimes'(MySQL 5.0.22-log) `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] 用复合唯一键 UNIQUE KEY `id_time` (`id`,`time`) 因此每个ID可以有多个时间戳,每个时间戳可以有多个ID。 我正在尝试建立一个查询,以获取所有条目以及每个条目的下一个较大时间(如果存在),因此它应返回例如: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | 155 | 1322222222 | NULL | | 156 …
18 mysql  innodb  select 

1
忽略“哪里”的口音
在我们的数据库中,我们有关于caron / hatschek的多个条目。现在,当我们的用户搜索不带caron / hatschek的条目时,他们希望找到这些条目。我将通过一个简单的示例来说明这一点: 在我们的数据库中,我们有条目(带有姓名的联系方式) Millière 所以这个名字在这个人居住的国家是正确的。 在我们的国家/地区,caron / hatschek没有任何字符,因此我们的用户搜索Milliere。没有结果,è显然不匹配e。 我不知道这到底是怎么实现的é,è,ê还有更多可供选择(而这仅是字母一个例子e......)。 (另一种方法会容易得多,因为我可以简单地将所有字母替换为用caron / hatschek替换为基本字母。显然,我们的用户确实希望数据库中使用正确的名称版本,而不是残缺的名称。)

1
从索引列上非常大的表中选择SELECT TOP 1非常慢,但不是相反的顺序(“ desc”)
我们有一个大型数据库,大约1TB,在功能强大的服务器上运行SQL Server 2014。几年一切正常。大约2周前,我们进行了全面维护,其中包括:安装所有软件更新;重建所有索引和紧凑的数据库文件。但是,我们没想到在实际负载相同的情况下,在某些阶段数据库的CPU使用率会增加100%以上至150%。 经过大量的故障排除后,我们将其范围缩小到一个非常简单的查询,但找不到解决方案。查询非常简单: select top 1 EventID from EventLog with (nolock) order by EventID 它总是需要约1.5秒!但是,带有“ desc”的类似查询始终大约需要0毫秒: select top 1 EventID from EventLog with (nolock) order by EventID desc PTable大约有5亿行;EventID是ASC数据类型为bigint(标识列)的主聚集索引列(有序)。有多个线程在顶部的数据表中插入数据(较大的EventID),有1个线程从底部的数据表中删除数据(较小的EventID)。 在SMSS中,我们验证了两个查询始终使用相同的执行计划: 聚集索引扫描; 估计行数和实际行数均为1; 估计的执行次数和实际的执行次数均为1; 估计I / O成本为8500(似乎很高) 如果连续运行,则两者的查询成本都是相同的50%。 我更新了索引统计信息with fullscan,问题仍然存在;我再次重建了索引,问题似乎消失了半天,但又回来了。 我通过以下方式打开了IO统计信息: set statistics io on 然后连续运行两个查询,发现以下信息: (对于第一个查询,慢速查询) 表“ PTable”。扫描计数1,逻辑读407670,物理读0,预读0,lob逻辑读0,lob物理读0,lob预读0。 (对于第二个查询,快速查询) …

2
使用WITH进行多项操作
有没有一种方法可以使用该WITH语句执行多个操作? 就像是 WITH T AS ( SELECT * FROM Tbl ) BEGIN OPEN P_OUTCURSOR FOR SELECT * FROM T; SELECT COUNT(*) INTO P_OUTCOUNT FROM T; END; 我想选择一些数据及其数量...
16 oracle  select  cte 

4
递归自我联接
我有一张comments桌子,可以简化为: comments ======= id user_id text parent_id where parent_id可为空,但可能是其父注释的键。 现在,我该如何select评论所有后代? 评论可能会降低几个级别...

3
为什么必须从对偶表中进行选择?
这适用于最可能出现在StackOverflow / dba.stackexchange上的主要关系数据库管理系统,它们是SQL Server,MySQL,PostgreSQL和SQLite(WebSQL)。 select 'abc' abc, 1 def; 它在Oracle上不起作用。为什么我们需要从Oracle的DUAL中进行选择?SQL的ISO / ANSI标准是否需要SELECT语句的FROM子句? 编辑: 根据Per Bacon Bit的回答,SQL标准似乎确实需要这样做。 因此,在现实中,因为DUAL名字是这样的用词不当,如果我要创建一个表,并将其命名为Atom或ONE,如create table one (atom int);.. select 'abc' abc, 1 def FROM one;-有没有比较的性能损失SELECT .. FROM DUAL?
15 oracle  select 

2
在SQL查询(或视图定义)中术语“投影”指的是什么
在Oracle的文档的查询优化器,在视图合并,我发现下面的信息 视图合并优化适用于仅包含选择,投影和联接的视图。也就是说,可合并视图不包含集合运算符,聚合函数,DISTINCT,GROUP BY,CONNECT BY等。 (强调我的) 但是,我只能猜测这种预测实际上是指什么。
15 oracle  select 

4
即使零行匹配,也让SELECT返回恒定值
考虑以下选择语句: SELECT *, 1 AS query_id FROM players WHERE username='foobar'; 它返回query_id带有值的列1以及玩家的其他列。 如何将一个至少让上面的SQL回报query_id的1,即使选择,反而找不到行那场比赛? 顺便说一句,它是PostgreSQL 8.4。

2
计数子查询中的行
简单:我想计算子查询的行数。请注意,状态是主机是否在线。 错误的代码 SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) 解释 第一个查询单独运行时返回以下内容: SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 单独运行的第二个查询返回以下内容: SELECT COUNT(ip_address) FROM `ports` 17 题 我想知道如何计算5个IP地址的列表。 我一直在网上寻找这个简单问题的可能解决方案,并且感到沮丧,所以我想请专家们。

1
在CREATE TABLE…AS SELECT中自动递增主键
我通过使用复杂的选择查询创建了表格CREATE TABLE ... AS SELECT...。如何在此查询中添加自动增量主键? 例如: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` 此查询创建一个包含表firstname,lastname,lang,username,group_name列。我希望它也具有id作为自动增量主键的列。 有什么办法可以通过更改此查询来做到这一点?我知道我可以通过在执行此查询后更改表来做到这一点,但是如果有任何直接在create table语句中执行此操作的方法,我想知道如何执行此操作。

2
仅选择特定列具有不同/多个值的那些记录
以下是我的会员表的示例。电子邮件字段中有一些记录具有多个值。我只想选择具有多个电子邮件值的那些记录: 会员表 ID LASTNAME FIRSTNAME EMAIL 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 678 Black Ted tedblack@gmail.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole colerobersc@hotmail.com 我希望结果是: 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole …
11 select  count  distinct 

2
不相关的列会影响select语句的查询时间吗?
我只是好奇。 假设您有一个包含100万条记录/行的表。 select order_value from store.orders 该表在实际查询时间内是1个字段,2个字段还是100个字段是否有所不同?我的意思是除“ order_value”以外的所有字段。 现在,我正在将数据推送到数据仓库。有时我将字段转储到表中,“将来可能在某天使用”-但是现在没有任何查询。这些“外部”字段会直接或间接影响不包含它们的选择语句吗(否*我的意思是)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.