Tag: MySQL

在SELECT子句中没有聚合函数时GROUP BY行为

我有一个表emp与以下结构和数据: name dept salary —– —– —– Jack a 2 Jill a 1 Tom b 2 Fred b 1 当我执行下面的SQL时: SELECT * FROM emp GROUP BY dept 我得到以下结果: name dept salary —– —– —– Jill a 1 Fred b 1 服务器在什么基础上决定返回吉尔和弗雷德,排除杰克和汤姆? 我在MySQL中运行这个查询。 注1:我知道这个查询没有意义。 我试图用“GROUP BY”schemedebugging一个问题。 我想了解为此目的的默认行为。 注2:我习惯编写与GROUP BY子句相同的SELECT子句(减去聚合字段)。 当我遇到上面描述的行为时,我开始想知道是否可以依赖于这种情况,例如:从emp表中select行中薪水最低/最高的那些行。 例如:像这样的SQL语句适用于MySQL: SELECT A.*, MIN(A.salary) AS min_salary […]

sql组通过与独特

当查询中没有完成聚合时,为什么有人会使用一个组而不使用一个组? 另外,有人知道在MySQL和SQL Server中,不同的性能考虑。 我猜SQL Server有一个更好的优化器,他们可能接近于同等的地位,但在MySQL中,我期望明显的性能优势。 我对dba的答案感兴趣。 编辑: 比尔的post很有趣,但不适用。 让我更具体的… select a, b, c from table x group by a, b,c 与 select distinct a,b,c from table x

是否可以将数据插入MySQL视图?

我做了4个表的MySQL视图。 是否有可能将数据插入视图,并让MySQL自动将数据传递到正确的表?

将MySQL数据库放在版本控制下?

我目前正在为我的PHP项目使用SVN。 我以为我应该让我的数据库在版本控制下,但是最好的办法是什么? 我只是在SVN中的项目中创build一个db文件夹,将SQL更改粘贴到一个名为from_1.0_to_2.0.sql的文件中并提交?

案例expression与案例陈述

MySQL中的Caseexpression式与Case语句之间有什么区别? 他们什么时候可以使用,以及使用其中一个的好处是什么? 案例语句语法: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] … [ELSE statement_list] END CASE 案例expression式语法: CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END 这些看起来几乎完全相同,但Case语句的初始描述是The CASE statement for stored programs implements a complex conditional construct. 那么,在存储的程序中使用哪一个显着的区别,在正常的查询中是不可用的呢? 我尝试了一个查询,我正在玩,失败 – sqlfiddle 。 如果是这种情况,为什么不直接在stored procedures中使用Case Expression? 还有什么其他的语法差异要注意,因为它们看起来是一样的吗?

何时更新时间戳(自动)?

如果我有一个types为TIMESTAMP的表中的列,并且默认情况下是CURRENT_TIMESTAMP,那么如果我更新同一行中的任何其他列的值,该列是否会更新为当前时间戳? 它似乎没有,但我不知道这是怎么回事。 我不明白这是什么意思( 从MySQL文档 ): 如果该列是自动更新的,则当该行中的任何其他列的值从其当前值更改时,该列将自动更新为当前时间戳。 如果所有其他列都设置为当前值,则该列保持不变。 要防止其他列更改时更新列,请明确将其设置为其当前值。 即使其他列不更改,也要更新列,明确地将其设置为它应该具有的值

像A1一样创build表格A1

我想创build一个新的表,旧表的属性,没有重复。 我想要做这样的事情: CREATE TABLE New_Users LIKE Old_Users, AS (SELECT * FROM Old_Users GROUP BY ID) ; 但上述不起作用。 请,任何人都可以修改它的工作?

帮助:错误1025(HY000):重命名错误…(错误:150)

当我尝试运行alter table命令删除列时出现此错误:错误1025(HY000):错误重命名….(错误:150)。 如果我理解正确,这是一个外键问题,但我不知道如何解决这个问题。 会有人这样善良,告诉我如何得到它的工作。 用于创build表的代码: CREATE TABLE categories( cid INT AUTO_INCREMENT NOT NULL PRIMARY KEY, assets_id INT NOT NULL, cat_name VARCHAR(30) NOT NULL, INDEX(assets_id), FOREIGN KEY (assets_id) REFERENCES asset(aid) ON UPDATE CASCADE ) ENGINE=INNODB DEFAULT CHARSET=utf8; alter命令: ALTER TABLE categories DROP COLUMN assets_id; 表格类别是完全空白的。 所以没有信息来引起CASCADE的限制。 那么你能帮我什么样的巫术,我需要删除列assets_id。 谢谢。

在MySQL中插入/更新随机date

我如何使用MySQL在过去2周内随机更新一列? 例如(代码实际上不工作): UPDATE mytable SET col = sysdate() – rand(1, 14);

在MySQL中,我可以推迟引用完整性检查,直到提交

正如在这个问题中 ,我一直在阅读PoEAA,并想知道是否有可能推迟引用完整性检查,直到在MySQL提交。 当想要在同一个提交中插入一堆产品和相关产品时,我遇到了这个问题。 即使在事务中,当我尝试插入到related_products连接表中时,也会遇到约束错误。 如果有帮助,我使用PHP PDO进行数据库连接。 我会很感激你可以提供任何帮助。