SELECT A, B, C FROM TUser
UNION
IF EXISTS(SELECT dataUserId FROM TUserData WHERE DataId = @dataId AND UserId = @userId)
BEGIN
SELECT @dataUserId = dataUserId FROM TUserData WHERE DataId = @dataId AND UserId = @userId
SELECT A, B, C FROM TUser WHERE UserId = dataUserId
END
Respuesta
Puede transformarla así:
SELECT @dataUserId = dataUserId FROM TUserData
WHERE DataId = @dataId AND UserId = @userId
IF (@dataUserId IS NOT NULL)
BEGIN
SELECT A, B, C FROM TUser
UNION
SELECT A, B, C FROM TUser WHERE UserId = @dataUserId
END
ELSE
SELECT A, B, C FROM TUser
Uso incorrecto de la unión. Todas las tablas que estás juntando en una unión deben tener las mismas columnas. Algo más como:
SELECT A, B, C FROM TUser
UNION
SELECT A, B, C FROM TUser WHERE UserId = dataUserId
Gracias a todos ... Tengo una solución de todas las respuestas – spj
SQL no válido. Parece que estás intentando escribir algo como una función/procedimiento almacenado.
Así es como funciona UNIÓN (http://www.w3schools.com/SQL/sql_union.asp):
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
Ambas sentencias SELECT deben tener el mismo número de columnas. Las columnas también deben tener tipos de datos similares. Además, las columnas en cada declaración SELECT deben estar en el mismo orden.
Usted podría utilizar existe en la cláusula WHERE en lugar de la instrucción IF:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
WHERE EXISTS (SELECT columns FROM table_name3)
Usted no puede utilizar una sentencia dentro if
un union
así.
lugar de utilizar un if exists
puede simplemente usar un inner join
:
select A, B, C from TUser
union
select u.A, u.B, u.C from TUser u
inner join TUserData t on t.dataUserId = u.UserId
where t.DataId = @dataId and t.UserId = @userId
Hay una pequeña diferencia cuando se utiliza una combinación interna, sin embargo. Si coincidiera con más de un registro de la tabla TUserData, no descartará aleatoriamente todos los resultados excepto uno como select @dataUserId=...
, sino que devolverá el resultado de cada coincidencia.
(Tenga en cuenta que la unión no tiene sentido en su forma actual. Como obtiene todos los registros de la tabla en la primera consulta, todo lo que obtenga en la segunda consulta solo será duplicado, pero supongo que simplificó el primera consulta y que en realidad no conseguir todo de la mesa)
SELECT A, B, C
FROM TUser
UNION
SELECT u.A, u.B, u.C
FROM TUser AS u
JOIN TUserData AS d ON u.UserId = d.dataUserId
WHERE d.UserId = @userId
AND d.DataId = @dataId
- 1. Establezca la variable a SCOPE_IDENTITY dentro de la instrucción IF
- 2. Mysql: RENAME TABLE IF EXISTS
- 3. instrucción IF dentro de un LINQ SELECT
- 4. jQuery múltiples condiciones dentro de la instrucción if
- 5. xpath find if node exists
- 6. ¿Cómo usar la instrucción SQL Select con la subconsulta IF EXISTS?
- 7. Pantalla GNU connect if exists, create if not
- 8. IF instrucción simplemente no está funcionando
- 9. grep en la instrucción IF
- 10. Oracle sql return true if exists question
- 11. Implementando sentencias 'if' condicionales dentro de una instrucción LINQ 'where'
- 12. sql-server, instrucción IF dentro de SQL Query
- 13. cómo escribir una condición if dentro de una instrucción select?
- 14. MS Access: ¿cláusula WHERE-EXISTS-no funciona en las vistas?
- 15. DBNull if instrucción
- 16. Confunde con == y = en la instrucción "if"
- 17. `if [-e file.txt]` no funciona en bash
- 18. If instrucción en C++
- 19. acceso variable fuera de la instrucción if
- 20. #Eval if instrucción en el repetidor
- 21. ¿Por qué mi instrucción "if" parece no ejecutarse?
- 22. Cómo utilizar DROP TABLE IF EXISTS en MySQL Stored Procedure
- 23. if instrucción en la plantilla gridview presentada
- 24. If instrucción en la página aspx
- 25. SQL dinámico (EJECUTAR) como condición para la instrucción IF
- 26. Error de sintaxis con IF EXISTS UPDATE ELSE INSERT
- 27. ¿Usando '&&' como una abreviación de instrucción if?
- 28. pitón MySQL instrucción de eliminación no funciona
- 29. Hotkey if instrucción usando múltiples condicionales
- 30. No se utiliza una instrucción if en Java
eso no está permitido, al mismo tiempo unión debe tener el mismo número de columnas en las dos instrucciones select – hallie
@hallie:. Bueno, el problema principal es que lo sigue la directiva sindical no es una declaración selecta en absoluto. – Guffa