我只是发现mysql可以使用如下方式查询datetime:
like '2013-06-12%'
Run Code Online (Sandbox Code Playgroud)
我认为它不能使用索引.我谷歌,但直接找不到这样的主题.所以我使用3308614记录的表进行了测试.第一个SQL:
SELECT * FROM subscription t WHERE DATE(t.active_time) = '2013-06-30';
Run Code Online (Sandbox Code Playgroud)
我们都知道这个SQL不能使用索引,需要4秒才能得到结果.第二个SQL:
SELECT * FROM subscription t WHERE t.active_time LIKE '2013-06-30%';
Run Code Online (Sandbox Code Playgroud)
我不知道它是否可以使用索引,但它也需要4秒.第三个SQL:
SELECT * FROM subscription t WHERE t.active_time > '2007-11-30' AND t.active_time < '2007-12-01';
Run Code Online (Sandbox Code Playgroud)
我们都知道第三个SQL可以使用索引,它需要0.016秒.
所以我认为'like'在查询datetime字段时不能使用索引,因为mysql应该首先将datetime字段转换为字符串并将字符串发送到like命令.它是否正确 ?
我对intellij的想法很新鲜.我只是导入了几个项目eclipse,它是intellij想法中的模块.
我在一个模块中运行一个main并获得file can not found异常.我检查user.dir参数并直接找到另一个模块(该模块是我导入eclipse项目时的第一个模块).
System.out.println(System.getProperty("user.dir"));
Run Code Online (Sandbox Code Playgroud)
我只想在一个模块中运行main时将user.dir设置为该模块目录.怎么设置呢?
我在MYSQL中有一个表:
CREATE TABLE test.tem(a INT,b INT);
Run Code Online (Sandbox Code Playgroud)
以下数据:
INSERT INTO test.tem VALUES(1,2),(1,1),(1,NULL),(2,3);
Run Code Online (Sandbox Code Playgroud)
现在数据应该是:
+------+------+
| a | b |
+------+------+
| 1 | 2 |
| 1 | 1 |
| 1 | NULL |
| 2 | 3 |
+------+------+
Run Code Online (Sandbox Code Playgroud)
我想按列a将列b更新到min(b)组.
所以SQL应该是:
UPDATE test.tem o
SET o.b = (SELECT
MIN(b)
FROM test.tem i
WHERE i.a = o.a)
Run Code Online (Sandbox Code Playgroud)
但是MYSQL 无法在FROM子句中指定更新目标表
所以我认为下面的SQL可以很好地解决我的问题:
UPDATE test.tem t1
JOIN test.tem t2
ON t1.a = t2.a
SET t1.b = t2.b
WHERE t1.b IS NULL
OR t1.b …Run Code Online (Sandbox Code Playgroud)