2012-07-31 20 views
6

Tengo una base de datos con 69 tablas y deseo seleccionar solo los primeros tres registros de cada tabla.Seleccione las primeras 3 filas de cada tabla en una base de datos

puedo hacerlo por mesa con:

SELECT TOP 3 * 
    FROM table_schema.table_name 

Sin embargo, si tuviera que hacerlo de forma manual, tardaría mucho tiempo.

¿Podría sugerir una solución?

me trataron this solution pero puedo conseguir que funcione (no sé cómo modificar para MSSQL)

EDITAR Gracias por sus respuestas. Probablemente no fui lo suficientemente claro: quise decir que quería analizar cada tabla individual y solo obtener los 3 mejores registros que pasar al siguiente. código de Yaroslav a continuación es lo que se necesita

DECLARE @sql VARCHAR(MAX)=''; 
SELECT @[email protected]+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';' 
    FROM sys.tables 
EXEC(@sql) 
+1

primeros tres registros de acuerdo a lo que la columna ?, una tabla no tiene un orden natural * * o algo así – Lamak

Respuesta

10

Aquí tienes:

DECLARE @sql VARCHAR(MAX)=''; 
SELECT @[email protected]+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';' 
    FROM sys.tables 
EXEC(@sql) 
+1

¡Gracias, amigo! ¡Eso es exactamente lo que necesitaba! ¡Muy apreciado! Поздрави! – Phil

+1

De nada, la solución @Aushin también es rápida y limpia, pero "pero" es que MSforeachtable y MSforeachdb son procedimientos almacenados no documentados, por lo tanto, Microsoft no los admite y puede cambiarlos en cualquier momento – Yaroslav

+1

Solo una pregunta de seguimiento: ¿qué haría? ser la mejor manera de exportar todos los resultados a la vez? Parece que solo puedo exportar "por mesa"? Gracias – Phil

5
exec sp_MSforeachtable 'select top 3 * from ?' 
+0

Gracias pero eso solo funciona si quieres hacerlo por tabla manualmente. El comentario de Yaroslav a continuación aborda lo que necesitaba. Gracias por tu ayuda. – Phil

+2

¿Qué quiere decir manualmente? – Aushin

+0

@Phil - ¿Qué quieres decir con "solo funciona si quieres hacerlo por tabla manualmente" ?, eso es lo que estabas preguntando, ¿no? – Lamak

Cuestiones relacionadas