Я довольно новичок в SQL, и у меня есть вопрос о некоторых основах:
Как я понимаю, читая книгу Грубера, невозможно использовать изменяемую таблицу в предложении "ОТ", а такжев подзапросе.Итак, у меня есть таблица:
snum |sname |city |comm
----------------------------
1001 |Peel |London |0.12
1002 |Serres |San Jose |0.13
1003 |Axelrod|New York |0.1
1004 |Motika |London |0.11
1007 |Rifkin |Barcelona|0.15
1100 |Bianco |San Jose |0.14
И запрос:
INSERT INTO SalespeopleCopy(sname, city, comm)
SELECT sname, city, comm FROM SalespeopleCopy seconddata
WHERE seconddata.city >= (Select MAX(city) from SalespeopleCopy);
Таблица изменилась после ее выполнения:
snum |sname |city |comm
----------------------------
1001 |Peel |London |0.12
1002 |Serres |San Jose |0.13
1003 |Axelrod|New York |0.1
1004 |Motika |London |0.11
1007 |Rifkin |Barcelona|0.15
1100 |Bianco |San Jose |0.14
1102 |Serres |San Jose |0.13 (new row)
1100 |Bianco |San Jose |0.14 (new row)
В третьей строке яссылка на таблицу SalespeopleCopy, которая находится в предложении «ОТ».И SalespeopleCopy изменяется одновременно.
Это особенность базы данных SQLite (3)?Или я не правильно понимаю основы?
О книге, которую я читаю. Есть таблица с именем "SJpeople". Мы хотим вставить в нее несколько строк.И мы хотим проверить, существует ли текущая строка в таблице SJpeople перед ее вставкой.
цитата:
"Было бы лучше, если бы вы как-то узнали, чтоэти значения уже были вставлены в таблицу, прежде чем вы попытаетесь сделать это снова, добавив еще один подзапрос (используя операторы, такие как EXISTS, IN, <> ALL и т. д.) к предикату. К сожалению, для выполнения этой работы,вам нужно будет сослаться на саму таблицу SJpeople в предложении FROM этого нового подзапроса, и, как мы говорили ранее, вы не можете ссылаться на таблицу, которая участвует (полностью) в любом подзапросе команды модификации. "