2016-05-01 46 views
-1

仍然得到與SQL交手,但這個接縫像一個非常基本的問題,即時通訊顯然缺少的東西大sql語句錯誤的基本

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

我沒有得到任何行返回時,我知道一個事實,即有arbitraryInt值是小於最大值。 Theres沒有錯誤,雖然沒有返回。在此先感謝

更新:這是一個仍然得到一個錯誤與關鍵字

UPDATE myTable SET arbitraryInt = arbitraryInt + 1 
WHERE primaryKey = 0001 AND arbitraryInt < (
    SELECT MAX(arbitraryInt) FROM myTable 
); 

我得到myTable的是soecified錯誤的代碼的其餘部分的兩倍

上下文是我嘗試做可以使用每個項目的排序整數手動排序項目。所以MAX的原因是保持這個整數不會超過必要的。我敢肯定,這是一個好辦法,但我沒有看到它。我正在尋找的結果是一張帶有向上和向下箭頭的表格,以重新爲在線商店的訂單項目排序。

+0

我覺得你可以更新選定的光標。這可能是你的問題。 – Sebas

+0

通過這樣的排序,你最終會增加一些'arbitraryInt'值,以便它匹配MAX(任意Int),最終它們將等於MAX()。我認爲你應該讓整數值變大。一個整數會給你超過20億個數字。 – user212514

回答

0

子查詢必須是完整的查詢,能夠自行運行。你的子查詢

(SELECT MAX(arbitraryInt)) 

是不完整的,因爲它沒有指定FROM條款。你的完整的查詢大概應該是這樣的

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

謝謝,這固定了查詢的這一部分。在上下文中,我現在有更新myTable的設置任意=任意的+ 1 WHERE的主鍵= 0001和任意的<(選擇MAX(任意)從myTable);)我得到myTable錯誤兩次的錯誤 – Felix

0

你缺少一個from條款,所以想必你打算:

SELECT * 
FROM myTable 
WHERE arbitraryInt < (SELECT MAX(arbitraryInt) FROM mytable); 
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