Sql语句错误基本

时间:2016-05-01 01:10:42

标签: mysql sql

仍在掌握sql,但这种接缝就像一个非常基本的问题,我显然缺少一些大的东西

SELECT * FROM myTable WHERE arbitraryInt < (SELECT MAX(arbitraryInt));

当我知道有任意值小于最大值的事实时,我没有返回任何行。虽然没有任何回复,但没有错误。提前致谢

更新:这是使用FROM关键字

仍然出错的其余代码
UPDATE myTable SET arbitraryInt = arbitraryInt + 1 
WHERE primaryKey = 0001 AND arbitraryInt < (
    SELECT MAX(arbitraryInt) FROM myTable
);

我得到错误myTable被强化了两次

上下文是我试图使用每个项目的排序整数来手动排序项目。所以MAX的原因是要保持整数不要超过必要的大小。我确定这是一个更好的方式,但我还没有看到它。我要查找的结果是一个带有向上和向下箭头的表格,用于重新排序在线商店的列表项目。

3 个答案:

答案 0 :(得分:0)

子查询必须是完整的查询,能够独立运行。你的子查询

(SELECT MAX(arbitraryInt))

未完成,因为它未指定 FROM 子句。您的完整查询应该类似于

SELECT *
  FROM myTable
  WHERE arbitraryInt < (SELECT MAX(arbitraryInt)
                          FROM myTable);

答案 1 :(得分:0)

你错过了from条款,所以大概是你打算:

SELECT *
FROM myTable
WHERE arbitraryInt < (SELECT MAX(arbitraryInt) FROM mytable);

答案 2 :(得分:0)

之前有堆栈溢出功能。看看MYSQL update with WHERE SELECT subquery error

The following code seems to be something like what you are asking for
/*
CREATE TABLE MYTABLE (PRIMARYKEY INT, ARBITRARYID INT, AB1 INt)
*/

truncate table MYTABLE;
INSERT INTO MYTABLE
VALUES (1,1,NULL),(1,2,NULL),(1,3,NULL);

update  MYTABLE 
set     ARBITRARYID = ARBITRARYID + 1
where   PRIMARYKEY = 1 and
        ARBITRARYID <=  (
        SELECT MAXABID FROM
        (
        select max(ARBITRARYID) MAXABID FROM MYTABLE
        ) S
        )
;
select * from MYTABLE