Tag: sql

为每组分组的SQL结果获取最大值的logging

你如何获得包含每个分组集合的最大值的行? 我在这个问题上看到了一些过于复杂的变化,没有一个答案很好。 我试图把最简单的例子放在一起: 给出如下的表格,包括人员,组别和年龄栏,你将如何得到每组中最年长的人? (一个组内的领带应该给第一个字母的结果) Person | Group | Age — Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 预期结果集: Shawn | 1 | 42 Laura | 2 | 39

在MySql中执行查询时与only_full_group_by相关的错误

我已经升级了我的系统,并安装了MySql 5.7.9与我的工作的Web应用程序的PHP。 我有一个dynamic创build的查询,并在较旧版本的MySql中运行时,它工作正常。 由于升级到5.7我得到这个错误: SELECT列表的expression式#1不在GROUP BY子句中,并且包含非聚集列'support_desk.mod_users_groups.group_id',它在function上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容 请注意关于服务器SQL模式主题的Mysql 5.7手册页。 这是给我麻烦的查询: SELECT mod_users_groups.group_id AS 'value', group_name AS 'text' FROM mod_users_groups LEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id WHERE mod_users_groups.active = 1 AND mod_users_groups.department_id = 1 AND mod_users_groups.manage_work_orders = 1 AND group_name != 'root' AND group_name != 'superuser' GROUP BY group_name HAVING COUNT(`user_id`) > […]

在MySQL中创build一个累积和列

我有一个如下所示的表格: id count 1 100 2 50 3 10 我想添加一个名为cumulative_sum的新列,所以表如下所示: id count cumulative_sum 1 100 100 2 50 150 3 10 160 有一个MySQL更新语句,可以很容易地做到这一点? 什么是完成这个最好的方法?

只有插入一行,如果它不在那里

我一直使用类似于以下的东西来实现它: INSERT INTO TheTable SELECT @primaryKey, @value1, @value2 WHERE NOT EXISTS (SELECT NULL FROM TheTable WHERE PrimaryKey = @primaryKey) …但是一旦发生负载,就会发生主键违例。 这是根本插入这张桌子的唯一声明。 那么这是否意味着上述说法不是primefaces的? 问题是这几乎不可能随意重新创build。 也许我可以把它改成如下的东西: INSERT INTO TheTable WITH (HOLDLOCK, UPDLOCK, ROWLOCK) SELECT @primaryKey, @value1, @value2 WHERE NOT EXISTS (SELECT NULL FROM TheTable WITH (HOLDLOCK, UPDLOCK, ROWLOCK) WHERE PrimaryKey = @primaryKey) 虽然,也许我正在使用错误的锁或使用太多的锁或什么的。 我已经看到了stackoverflow.com上的其他问题,其中答案是build议“IF(SELECT COUNT(*)… INSERT”等,但我总是在(也许是不正确的)假设一个单一的SQL语句将primefaces。 有没有人有任何想法?

如何获得最后插入的ID?

我有这个代码: string insertSql = "INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId)"; using (SqlConnection myConnection = new SqlConnection(myConnectionString)) { myConnection.Open(); SqlCommand myCommand = new SqlCommand(insertSql, myConnection); myCommand.Parameters.AddWithValue("@UserId", newUserId); myCommand.Parameters.AddWithValue("@GameId", newGameId); myCommand.ExecuteNonQuery(); myConnection.Close(); } 当我插入到这个表中时,我有一个名为GamesProfileId的auto_increment int主键列,我怎样才能得到最后一个插入一个之后,所以我可以使用该ID插入到另一个表?

PostgreSQL列名是否区分大小写?

我有一个数据库表,说Postgres的persons有一个列名称,说: "first_Name"的另一个团队传下来。 现在我试图用PG命令来查询这个列名的这个表。 select * from persons where first_Name="xyz"; 它只是返回 错误:列“first_Name”不存在 不知道我是在做一些愚蠢的事情还是有解决这个问题的方法,我失踪了?

如何做MySQL中的recursionSELECT查询?

我有一张表格: col1 | col2 | col3 —–+——+——- 1 | a | 5 5 | d | 3 3 | k | 7 6 | o | 2 2 | 0 | 8 如果用户search“1”,程序将查看具有“1”的col1 ,然后在col3 “5”中得到一个值,然后程序将继续在col1search“5”,它将得到col3 “3”,依此类推。 所以它会打印出来: 1 | a | 5 5 | d | 3 3 | k | 7 如果用户search“6”,则会打印出: 6 | […]

在mysql中插入多行

如果我一次插入多行数据库查询更快: 喜欢 INSERT…. UNION INSERT…. UNION (我需要插入2-3000行)

我如何更新如果存在,插入,如果没有(AKA“upsert”或“合并”)在MySQL?

有一个简单的方法来INSERT一个行,当它不存在,或UPDATE如果它存在,使用一个MySQL查询?

何时需要在Oracle SQL中使用分号与斜线?

我们本周在我们公司进行了一些辩论,关于如何编写我们的SQL脚本。 背景:我们的数据库是Oracle 10g(即将升级到11)。 我们的DBA团队使用SQLPlus来将脚本部署到生产环境。 现在,我们最近部署了一个失败的部署,因为它使用了分号和正斜杠( / )。 分号在每个语句的末尾,斜线在语句之间。 alter table foo.bar drop constraint bar1; / alter table foo.can drop constraint can1; / 稍后在脚本中添加了一些触发器,创build了一些视图以及一些存储过程。 同时拥有; 和/导致每个语句运行两次导致错误(特别是在插入,这需要是唯一的)。 在SQL Developer中,这不会发生,在TOAD中这不会发生。 如果你运行某些命令,没有/它们就不能工作。 在PL / SQL中,如果你有一个子程序(DECLARE,BEGIN,END),所用的分号将被视为子程序的一部分,所以你必须使用斜杠。 所以我的问题是这样的:如果您的数据库是Oracle,那么编写SQL脚本的正确方法是什么? 既然你知道你的DB是Oracle,你应该总是使用/ ?