【发布时间】:2011-09-04 16:14:54
【问题描述】:
我昨天做了一个非常简单的查询,但今天早上我不记得我是怎么做的了,而且我尝试的任何方法都不起作用。
我想做一个简单的SELECT COUNT(*) 然后更新表TEST。我们希望列 start 中有多少值 (table1) 介于列 txStart 和列 txEnd 中的值(来自表 TEST)。
SELECT COUNT(*) 单独运行良好。
mysql> SELECT COUNT(*) FROM table1, TEST where table1.start BETWEEN TEST.txStart AND TEST.txEnd;
+----------+
| COUNT(*) |
+----------+
| 95149 |
+----------+
1 row in set (0.03 sec)
UPDATE 从未发生过。
mysql> UPDATE TEST
SET rdc_1ips =
SELECT COUNT(*) FROM table1, TEST WHERE table1.start between TEST.txStart AND TEST.txEnd;
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“SELECT COUNT(*) FROM table1, TEST WHERE table1.start between TEST.txStart A”附近使用正确的语法
这里是table1和table TEST的预览
mysql> SELECT * from table1 limit 2;
+----+--------+------+---------+---------+------+-------+
| id | strand | chr | start | end | name | name2 |
+----+--------+------+---------+---------+------+-------+
| 1 | - | 1 | 2999997 | 3000096 | NULL | NULL |
| 2 | + | 1 | 2999998 | 3000097 | NULL | NULL |
+----+--------+------+---------+---------+------+-------+
mysql> SELECT * FROM TEST;
+------+-----------+--------------+-------+---------+---------+----------+
| chr | pos_start | name | name2 | txStart | txEnd | rdc_1ips |
+------+-----------+--------------+-------+---------+---------+----------+
| 1 | 3204575 | NM_001011874 | Xkr4 | 3204562 | 3661579 | 0 |
+------+-----------+--------------+-------+---------+---------+----------+
【问题讨论】:
-
如果你知道在 mysql 中查找过去查询的方法.....请告诉我~!
-
用括号
SET rdc_1ips=(SELECT COUNT(*) FROM table1, TEST WHERE table1.start between TEST.txStart AND TEST.txEnd)怎么样? -
将 SELECT 放在括号中会有帮助吗?
-
括号!!啊!现在我记得 LOL 救生员乌斯曼 THANKXXX
-
感谢 StackOverflow 的你们,问题在 1 分钟内解决了 :)