天道酬勤,学无止境

sql

在 SQL 中使用 COUNT 函数(Using the COUNT function in SQL)

问题 首先,这是作业的一部分。 我正在尝试使用 COUNT 函数作为与 Northwind 数据库相关的查询的一部分。 查询应返回 CustomerID、CompanyName 和为每个相应客户下的订单数。 当然前两部分很简单,但是我无法让 COUNT 函数正常工作。 到目前为止,我的查询是: SELECT DISTINCT Customers.CustomerID, Customers.CompanyName, COUNT(Customers.CustomerID) FROM Orders, Customers WHERE Customers.CustomerID = Orders.CustomerID; 以这种方式使用 COUNT 的正确语法是什么? 它看起来像: CompanyID | CompanyName | # of orders 1 | Company A | 4 2 | Company B | 3 3 | Company C | 5 到目前为止,所有示例都单独使用了 COUNT 函数,而不是更复杂查询的一部分。 回答1 您需要一个group by子句,它允许您将结果分成多个组,并按组执行聚合函数(在本例中为count ): SELECT Customers.CustomerID, Customers.CompanyName, COUNT(*) FROM Orders

2021-06-21 12:29:06    分类:技术分享    sql   select   count

Generate changes script

Let's imagine I added new column for some table in SQL Server Management Studio. Is there any way to get change script which is executed when I press save? What I want to achieve is to apply the same change to other databases (we have a separate database for each developer for debuggin purposes).

2021-06-21 12:25:43    分类:问答    sql   sql-server   sql-server-2008   ssms

How to enforce uniques across multiple tables

I have the following tables in MySQL server: Companies: - UID (unique) - NAME - other relevant data Offices: - UID (unique) - CompanyID - ExternalID - other data Employees: - UID (unique) - OfficeID - ExternalID - other data In each one of them the UID is unique identifier, created by the database. There are foreign keys to ensure the links between Employee -> Office -> Company on the UID. The ExternalID fields in Offices and Employees is the ID provided to my application by the Company (my client(s) actually). The clients does not have (and do not care) about my own IDs, and all the data my

2021-06-21 12:23:33    分类:问答    sql   mysql   database   database-design   data-modeling

PostgreSQL 约束 - 只有一行可以设置标志(PostgreSQL constraint - only one row can have flag set)

问题 我有一个 PostgreSQL 表 CREATE TABLE my_table ( id serial NOT NULL, name text, actual boolean DEFAULT false, CONSTRAINT my_table_pkey PRIMARY KEY (id), ); 如何设置只有一行可以将actual标志设置为TRUE的约束? 回答1 您只能为真值在该列上创建唯一索引: create unique index on my_table (actual) where actual = true; SQLFiddle:http://sqlfiddle.com/#!15/91f62/1 回答2 我的方法会为仅基于索引的解决方案添加另一个功能:在另一行上设置标志时自动停用当前标志。 这当然会涉及一个触发器。 我还建议,正如 Frank Heikens 所建议的那样,将“非实际”状态存储为null而不是false 。 在 postgresql 中,每个null值都与另一个null值不同,因此唯一性约束很容易解决:我们可以只允许一个true值,并根据需要允许多个null值。 这是我的实现: CREATE TABLE my_table ( id serial NOT NULL, name text, actual boolean, CONSTRAINT my

2021-06-21 12:23:19    分类:技术分享    sql   postgresql

如何在PostgreSQL中查找重复记录(How to find duplicate records in PostgreSQL)

问题 我有一个名为“user_links”的 PostgreSQL 数据库表,它当前允许以下重复字段: year, user_id, sid, cid 唯一约束目前是第一个名为“id”的字段,但是我现在希望添加一个约束以确保year 、 user_id 、 sid和cid都是唯一的,但我无法应用该约束,因为已经存在重复的值,这违反了这一点约束。 有没有办法找到所有重复项? 回答1 基本思想将使用带有计数聚合的嵌套查询: select * from yourTable ou where (select count(*) from yourTable inr where inr.sid = ou.sid) > 1 您可以调整内部查询中的 where 子句以缩小搜索范围。 评论中提到的还有另一个很好的解决方案,(但不是每个人都阅读它们): select Column1, Column2, count(*) from yourTable group by Column1, Column2 HAVING count(*) > 1 或更短: SELECT (yourTable.*)::text, count(*) FROM yourTable GROUP BY yourTable.* HAVING count(*) > 1 回答2 从“使用 PostgreSQL 查找重复行”这里的智能解决方案

2021-06-21 12:20:21    分类:技术分享    sql   postgresql   duplicates

“group by”会自动保证“order by”吗?(Does “group by” automatically guarantee “order by”?)

问题 “group by”子句是否自动保证结果将按该键排序? 换句话说,这样写就足够了: select * from table group by a, b, c 还是必须写 select * from table group by a, b, c order by a, b, c 我知道例如在 MySQL 中我不必这样做,但我想知道我是否可以在 SQL 实现中依赖它。 有保证吗? 回答1 group by不会对数据进行必要的排序。 DB 旨在尽可能快地获取数据,并且仅在必要时进行排序。 因此order by如果您需要有保证的order by请添加订单。 回答2 group by 的有效实现将通过在内部对数据进行排序来执行分组。 这就是某些 RDBMS 在分组时返回排序输出的原因。 然而,SQL 规范并没有强制要求这种行为,所以除非 RDBMS 供应商明确记录,否则我不会打赌它会起作用(明天)。 OTOH,如果 RDBMS 隐式进行排序,它也可能足够智能,然后优化(去除)冗余顺序。 @jimmyb 使用 PostgreSQL 证明该概念的示例 创建一个包含 100 万条记录的表,从今天开始的一天范围内有随机日期 - 90 并按日期索引 CREATE TABLE WITHDRAW AS SELECT (random()*1000000)::integer AS IDT

2021-06-21 12:17:59    分类:技术分享    sql   database   group-by   database-agnostic

Killing the mysqld process

I have a table with ~800k rows. I ran an update users set hash = SHA1(CONCAT({about eight fields})) where 1; Now I have a hung Sequel Pro process and I'm not sure about the mysqld process. This is two questions: What harm can possibly come from killing these programs? I'm working on a separate database, so no damage should come to other databases on the system, right? Assume you had to update a table like this. What would be a quicker / more reliable method of updating without writing a separate script. I just checked with phpMyAdmin and it appears as though the query is complete. I still have

2021-06-21 12:17:01    分类:问答    sql   database   sql-update   mysql

使用 AJAX 监视 SQL 数据库的更改 [关闭](Use AJAX to watch SQL database for changes [closed])

问题 关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来关注一个问题。 4年前关闭。 改进这个问题 我的数据库中有一个列将随机更新。 每当该列更新时,我都需要刷新页面上的内容。 如何使用 AJAX + jQuery 仅对数据库更改执行操作? 回答1 使用 javascript 的 setinterval 函数进行轮询并检查更新后的 dababase 字段的值 检查以下链接以获取更多详细信息 http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/ 回答2 您所描述的内容通俗地称为 Comet 编程。 Comet 描述了一组使用持久 HTTP 连接将内容推送到网页的技术。 将使用数据库服务器中的触发器/存储过程组合启动推送。 这样,无论数据更新来自何处,它都会发生。 回答3 服务器(数据库/网络)无法发起连接——只有客户端可以。 所以你必须轮询数据库直到有更新。 您可以创建一个检查数据库和 jQuery 使用的 Web 服务。 编辑:我站纠正。 可以保持 AJAX 连接打开,直到服务器向其“推送”数据。 请参阅:http://en.wikipedia.org/wiki/Reverse_Ajax 显然它确实是轮询:http:/

2021-06-21 12:13:57    分类:技术分享    jquery   sql   ajax

如何在 SQL Server 2008 中分析“dbcc memorystatus”结果(How to analyze 'dbcc memorystatus' result in SQL Server 2008)

问题 目前我正面临 SQL 内存压力问题。 我已经运行了dbcc memorystatus ,这是我的结果的一部分: Memory Manager KB ---------------------------------------- ----------- VM Reserved 23617160 VM Committed 14818444 Locked Pages Allocated 0 Reserved Memory 1024 Reserved Memory In Use 0 Memory node Id = 0 KB ---------------------------------------- ----------- VM Reserved 23613512 VM Committed 14814908 Locked Pages Allocated 0 MultiPage Allocator 387400 SinglePage Allocator 3265000 MEMORYCLERK_SQLBUFFERPOOL (node 0) KB ---------------------------------------- ----------- VM Reserved 16809984 VM Committed 14184208 Locked Pages Allocated

2021-06-21 12:06:48    分类:技术分享    sql   sql-server-2008

Trigger to track changes in MySQL Database

I cannot seem to create a trigger. I have tried it the two ways below for the update. I keep getting a syntax error with the insert statement. I have searched forums and web searches for the past 4 hrs with no change. There is alot more code to this, It basically repeats itself. Any help would be appreciated. Thank You. I am running MySQL 5.0 and acessing via phpMyAdmin 2.8.2.4 as Administrator/Root. TRY 1 (with and without qoutes on all fields and names) CREATE TRIGGER insert_classes AFTER insert ON Classes FOR EACH ROW BEGIN insert into insert_tracking_classes (classID, Title, classDesc

2021-06-21 12:04:20    分类:问答    mysql   sql   triggers   mysql-error-1064