@Marc B provides the reason, why update
normally can’t work with limit
.
And @Roopchand also provide a solution.
For people like me, who is trying to avoid turning off the safe update mode
https://stackoverflow.com/a/28316067/1278112
This answer is quite helpful. It give an example
UPDATE customers SET countryCode = ‘USA’
WHERE country = ‘USA’; — which gives the error, you just write:UPDATE customers SET countryCode = ‘USA’
WHERE (country = ‘USA’ AND customerNumber <> 0); — Because customerNumber is a primary key you got no error 1175 any more.
And when I face update
with the multiple-table syntax, it also worked.
What I want but would raise error code 1175.
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
t1.name = t2.name;
The working edition
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
(t1.name = t2.name and t1.prime_key !=0);
Which is really simple and elegant. Since the original answer doesn’t get too much attention (votes), I post more explanation. Hope this can help others.
I just want to get the first result of this query but whenever I write down LIMIT. Oracle SQL Developer throws me this error
*ORA-00933: SQL command not properly ended
00933. 00000 — «SQL command not properly ended»
*Cause:
Action:
Error at Line: 6 Column: 7
Here is the Code:
SELECT IDBAR FROM ( SELECT PARRANDEROS.FRECUENTAN.ID_BAR as IDBAR,
COUNT(PARRANDEROS.FRECUENTAN.ID_BAR) c
FROM PARRANDEROS.FRECUENTAN
GROUP BY PARRANDEROS.FRECUENTAN.ID_BAR
ORDER BY c DESC
)
LIMIT 1;
I’ve tried this method too:
SELECT IDBAR FROM ( SELECT PARRANDEROS.FRECUENTAN.ID_BAR as IDBAR,
COUNT(PARRANDEROS.FRECUENTAN.ID_BAR) c
FROM PARRANDEROS.FRECUENTAN
GROUP BY PARRANDEROS.FRECUENTAN.ID_BAR
ORDER BY c DESC
LIMIT 1
);
Thanks a Lot.
asked Mar 1, 2015 at 1:37
1
Thanks to @Jim Garrison. The solution was to use the ROWNUM attribute:
SELECT IDBAR FROM ( SELECT PARRANDEROS.FRECUENTAN.ID_BAR as IDBAR,
COUNT(PARRANDEROS.FRECUENTAN.ID_BAR) c
FROM PARRANDEROS.FRECUENTAN
GROUP BY PARRANDEROS.FRECUENTAN.ID_BAR
ORDER BY c DESC
)
WHERE ROWNUM <= 1;
answered Mar 1, 2015 at 1:47
David CruzDavid Cruz
2,9973 gold badges28 silver badges41 bronze badges
Ввожу такие команды
BEGIN TRANSACTION;
/* Create a table called NAMES */
CREATE TABLE NAMES(Id integer, Name text);
/* Create few records in this table */
INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');
INSERT INTO NAMES VALUES(4,'Jane');
INSERT INTO NAMES VALUES(4,'HellO!');
INSERT INTO NAMES VALUES(5,'Robert');
COMMIT;
DELETE FROM NAMES WHERE Id = 4 LIMIT 1;
SELECT * FROM NAMES;
Получаю это:
1|Tom
2|Lucy
3|Frank
4|Jane
4|HellO!
5|Robert
Error: near line 15: near "LIMIT": syntax error
Как исправить ошибку с LIMIT? (точно такая же ошибка если пытаюсь как-то сделать с ORDER BY)
Link24 0 / 0 / 0 Регистрация: 18.04.2013 Сообщений: 117 |
||||
1 |
||||
03.10.2013, 20:01. Показов 3207. Ответов 7 Метки нет (Все метки)
Необходима выборка не более 50 значений
В чем ошибка? мозг сломал
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
03.10.2013, 20:01 |
Ответы с готовыми решениями: LIMIT Limit LIMIT Можно программно сделать… LIMIT and WHERE 7 |
_ViPeR_ 614 / 488 / 175 Регистрация: 02.03.2010 Сообщений: 1,236 |
||||
04.10.2013, 06:13 |
2 |
|||
0 |
Link24 0 / 0 / 0 Регистрация: 18.04.2013 Сообщений: 117 |
||||
04.10.2013, 16:03 [ТС] |
3 |
|||
Дак запрос с select должен начинаться. Так не катит
0 |
2663 / 1727 / 175 Регистрация: 05.06.2011 Сообщений: 4,967 |
|
05.10.2013, 12:04 |
4 |
В чем ошибка? Дык текст-то ошибки — где?
0 |
Link24 0 / 0 / 0 Регистрация: 18.04.2013 Сообщений: 117 |
||||
06.10.2013, 12:27 [ТС] |
5 |
|||
Дык текст-то ошибки — где?
Ошибка — отсутствует SELECT
0 |
2663 / 1727 / 175 Регистрация: 05.06.2011 Сообщений: 4,967 |
|
06.10.2013, 12:43 |
6 |
В последнем примере — однозначно. limit — фраза select, одиночно (к оператору в скобках) он не применяется. К исходному select какая ошибка?
0 |
0 / 0 / 0 Регистрация: 18.04.2013 Сообщений: 117 |
|
06.10.2013, 13:07 [ТС] |
7 |
В последнем примере — однозначно. limit — фраза select, одиночно (к оператору в скобках) он не применяется. К исходному select какая ошибка? You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘LIMIT 0, 10’ at line 1
0 |
_ViPeR_ 614 / 488 / 175 Регистрация: 02.03.2010 Сообщений: 1,236 |
||||
07.10.2013, 06:10 |
8 |
|||
Выполнил вот такой запрос у себя
Никакой ошибки. Не там копаете…
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
07.10.2013, 06:10 |
Помогаю со студенческими работами здесь LIMIT в IN update и limit UPDATE `fruit` LIMIT с переменными Limit и subquery Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
Столкнулся с задачей выполнить LIMIT в подзапросе, но это привело к ошибке: Error: #1235 — This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’. Неужели нет способа это сделать? Оказывается есть..
Исходный запрос:
SELECT DISTINCT `post_id` FROM `wp_postmeta` WHERE `post_id` IN ( SELECT `ID` FROM `wp_posts` ORDER BY `ID` DESC LIMIT 50 ) AND `meta_value` LIKE «http://site.com/%» LIMIT 10 |
приводит к ошибке:#1235 — This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’
Для того, чтобы запрос отработал, нам необходимо обернуть подзапрос в ещё один SELECT и вернуть результат подзапроса в виде переменной, вот так:
SELECT DISTINCT `post_id` FROM `wp_postmeta` WHERE `post_id` IN ( SELECT * FROM ( SELECT `ID` FROM `wp_posts` ORDER BY `ID` DESC LIMIT 50 ) as `id` ) AND `meta_value` LIKE «http://site.com/%» LIMIT 10 |
теперь все работает.
Автор:
| Рейтинг: 4/5 |
Теги: