热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HowcanIwritequerywherequerywithspecificwherecondition?

Ihaveonetablewithoneprimarykeyandthreeforeignkeys.Heremytablewithdata我有一个表有一个主键和三个外

I have one table with one primary key and three foreign keys. Here my table with data

我有一个表有一个主键和三个外键。这里有我的数据表

Id      RegistrationId        GroupId      ItemId   Value    
2345     68038                677           672      679    
3562     68038                357           783      423    
8236     NULL                 268           578      914    
7327     NULL                 677           672      467    
8733     NULL                 357           783      234

I want to write query to get this result

我想写查询来获得这个结果

Id      RegistrationId        GroupId      ItemId   Value
2345     68038                677           672      679
3562     68038                357           783      423    
8236     NULL                 268           578      914

As you can see I want all rows that have RegistrationId 68038 and I also want other default values for other GroupId and ItemId. How can I write SQL query to get result like above ? Thanks on your responds. How can I do this in MySQL ?

如您所见,我想要所有具有RegistrationId 68038的行,并且我还想要其他GroupId和ItemId的其他默认值。如何编写SQL查询以获得如上所示的结果?谢谢你的回应。我怎么能在MySQL中这样做?

2 个解决方案

#1


1  

You have tagged multiple databases, assuming it to be a SQL Server.

您已标记多个数据库,假设它是SQL Server。

Try this query, it will give you the desired output.

试试这个查询,它会给你想要的输出。

SELECT Id,RegistrationId ,GroupId,ItemId,Value FROM
(
  SELECT * ,
  ROW_NUMBER() OVER( PARTITION BY GroupId,ItemId   ORDER BY RegistrationId DESC) RN
  FROM [TABLE_NAME]
 ) T
WHERE T.RN=1
ORDER BY RegistrationId DESC

Example with sample data

示例数据示例

;WITH MY AS 
(
  SELECT * FROM (VALUES
  (2345 ,  68038  ,  677 , 672 , 679 ),
  (3562 ,  68038  ,  357 , 783 , 423 ), 
  (8236 ,  NULL   ,  268 , 578 , 914 ),
  (7327 ,  NULL   ,  677 , 672 , 467 ),
  (8733 ,  NULL   ,  357 , 783 , 234 ) 
  ) T(Id,RegistrationId ,GroupId,ItemId,Value)
)

SELECT Id,RegistrationId ,GroupId,ItemId,Value FROM
(
  SELECT * ,    
  ROW_NUMBER() OVER( PARTITION BY GroupId,ItemId   ORDER BY RegistrationId DESC) RN
  FROM MY
 ) T
WHERE T.RN=1
ORDER BY RegistrationId DESC

Output:

+------+----------------+---------+--------+-------+
| Id   | RegistrationId | GroupId | ItemId | Value |
+------+----------------+---------+--------+-------+
| 3562 | 68038          | 357     | 783    | 423   |
+------+----------------+---------+--------+-------+
| 2345 | 68038          | 677     | 672    | 679   |
+------+----------------+---------+--------+-------+
| 8236 | NULL           | 268     | 578    | 914   |
+------+----------------+---------+--------+-------+

#2


0  

I tried something like that and it worked, but its bit a hardcoded way:

我尝试了类似的东西并且它有效,但它有点硬编码方式:

    SELECT *
    FROM   MY
    WHERE  RegistrationId IS NOT NULL
    AND    GroupId IN (677, 357)
    UNION ALL
    SELECT *
    FROM   xxtest_tolga
    WHERE  GroupId NOT IN (677, 357);

Hope it works for you.

希望对你有效。


推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
coffee_陈--嘉辉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有