にデータを埋める - ここでtable_nameは、MIN_DATE、MAX_DATEは、私は がフィールドを持つ結果表を取得する必要があるすべてのテーブルに対してクエリを実行し、新しいもの
は、私はすべてのテーブルに対して実行する必要があり、私のクエリ、ある
トンSELECT MIN(short_date) as FirstDuplicatedDate, MAX(short_date) as LastDuplicatedDate
FROM (SELECT short_date, type, value, count(*) as cnt
FROM testTable
GROUP BY short_date
HAVING COUNT(*) > 1) as Duplicates
は、それから私は、私はこのよう
SELECT TABLE_NAME as name FROM `information_schema`.`TABLES`
WHERE `TABLES`.`TABLE_SCHEMA` = 'test'
AND `TABLES`.`TABLE_NAME` LIKE 'test%'
でそれを行う すべてのテーブル名を取得する方法を発見しかし、私はすべてのためにそれを実行する方法がわかりません新しいテーブルに結果を記入して記入してください。
私は、このように
DECLARE @DB_Name varchar(50)
DECLARE @Command varchar(100);
DECLARE database_cursor CURSOR FOR
SELECT name
FROM (SELECT TABLE_NAME as name FROM `information_schema`.`TABLES`
WHERE `TABLES`.`TABLE_SCHEMA` = 'test'
AND `TABLES`.`TABLE_NAME` LIKE 'test%') as TableNames
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Command = 'SELECT MIN(short_date) as FirstDuplicatedDate, MAX(short_date) as LastDuplicatedDate
FROM (SELECT short_date, type, value, count(*) as cnt
FROM ' + @DB_Name + '
WHERE type = ''test''
GROUP BY short_date, type, value
HAVING COUNT(*) > 1) as Duplicates'
EXEC sp_executesql @Command
FETCH NEXT FROM database_cursor INTO @DB_Name
END
CLOSE database_cursor
DEALLOCATE database_cursor
それを実行しようとしました。しかし、私はこのエラーに
構文エラーまたはアクセス違反を得た:1064あなたは、あなたのSQL 構文でエラーが発生しています。近くで使用する権利構文についてはMySQLサーバのバージョン に対応して、手動チェックライン1
UPD
で 'DECLAREの@db_nameのVARCHAR(50) @CommandのVARCHAR(100)を宣言'CREATE PROCEDURE GetData()
BEGIN
DECLARE @DB_Name varchar(50), @Command varchar(100);
DECLARE database_cursor CURSOR FOR
SELECT name
FROM (SELECT TABLE_NAME as name FROM `information_schema`.`TABLES`
WHERE `TABLES`.`TABLE_SCHEMA` = 'test'
AND `TABLES`.`TABLE_NAME` LIKE 'test%_') as TableNames
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Command = 'SELECT MIN(short_date) as FirstDuplicatedDate, MAX(short_date) as LastDuplicatedDate
FROM (SELECT short_date, type, value, count(*) as cnt
FROM ' + @DB_Name + '
WHERE type = ''test''
GROUP BY short_date, type, value
HAVING COUNT(*) > 1) as Duplicates'
EXEC sp_executesql @Command
FETCH NEXT FROM database_cursor INTO @DB_Name
END;
CLOSE database_cursor
DEALLOCATE database_cursor
END;
CALL GetData()
sql-serverとmysqlの両方にタグを付けました。あなたのエラーメッセージはmysqlを参照するので、sql-serverは間違っていなければなりません。削除してください。 –
ありがとうございます。私はt-sqlを削除するように言わなければなりませんでした。なぜなら、これはSQL-Server(そしてMySQLではなく)上で使用されるSQLの風味です。 –
あなたは正確に何をしようとしているのかの例を挙げることができます – Cherif