Как создать базу данных SQL на основе параметра, выполняемого в другой базе данных

#sql

#sql

Вопрос:

В настоящее время у меня большая база данных с парой сотен тысяч строк, и я пытаюсь выполнить фильтрацию, чтобы соответствовать определенному параметру для новой таблицы.

В настоящее время у меня есть код:

 SELECT sym, tstamp, COUNT(*) AS trades 
FROM datas 
GROUP BY sym, tstamp 
HAVING COUNT(tstamp) > 300 
 

Что дает мне отфильтрованную таблицу, которую я ищу. Однако я застрял здесь на том, как создать новую таблицу, как только я получу этот результат. Я уверен, что это довольно просто, но я застрял на нем на пару часов.

Это код, который я пытаюсь использовать:

 "INSERT INTO newdb SELECT * FROM datas 
 WHERE sym, tstamp, COUNT(*) AS trades 
 FROM datas GROUP BY sym, tstamp 
 HAVING COUNT(tstamp) > 300"
 

Ответ №1:

Похоже SELECT * FROM datas , у вас там просто есть лишний.

 INSERT INTO tradecounts
SELECT
    sym,
    tstamp,
    COUNT(*) AS trades
FROM
    datas
GROUP BY
    sym,
    tstamp
HAVING COUNT(tstamp) > 300
 

Ответ №2:

Если вы хотите создать новую таблицу с помощью этого запроса, вы можете использовать CTAS ( CREATE TABLE AS SELECT ) следующим образом:

 CREATE TABLE NEWDB AS
SELECT sym, tstamp, COUNT(*) AS trades 
FROM datas 
GROUP BY sym, tstamp 
HAVING COUNT(tstamp) > 300 
 

Ответ №3:

Используйте концепцию внешнего ключа, в которой поле первичного ключа родительской таблицы также будет сопоставляться с полем первичного ключа в дочерней таблице.Это поле первичного ключа дочерней таблицы будет внешним ключом для родительской таблицы.

например…Таблица1-Отдел, таблица 2-Сотрудник с идентификатором depid в качестве первичного ключа как таблицы, так и таблицы —

Создайте табличный отдел (первичный ключ depid varchar(10), имя varchar(50), номер зарплаты, ограничение xyz внешний ключ (depid) ссылается на отдел (depid) в каскаде удаления)

После удаления мы предоставляем режим, подобный — SET NULL, CASCADE , SET DEFAULT