【问题标题】:What's wrong with this simple query?这个简单的查询有什么问题?
【发布时间】: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 分钟内解决了 :)

标签: mysql select count


【解决方案1】:

将子选择放在括号中。 另外我会给内部的“测试”表一个别名(只是为了确定)

SET rdc_1ips = 
   (SELECT COUNT(*) FROM table1, TEST t2 
    WHERE table1.start between t2.txStart AND t2.txEnd)

但即使语法正确,我也不确定这是否可行。在从要更新的同一个表中进行选择时,MySQL 有一些令人讨厌的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2011-10-13
    • 2010-09-07
    • 2010-10-04
    • 2011-01-15
    相关资源
    最近更新 更多