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
5
A
回答
5
你可以将它像:
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
0
联合使用的错误使用。所有在一个工会中一起工作的表格必须具有相同的列。更类似于:
SELECT A, B, C FROM TUser
UNION
SELECT A, B, C FROM TUser WHERE UserId = dataUserId
+0
谢谢大家......我从你所有的答案中得到了解决方案 – spj 2010-03-10 09:31:50
2
这是无效的SQL。看起来你正在尝试写一些类似于函数/存储过程的东西。
这是工会组织如何运作(http://www.w3schools.com/SQL/sql_union.asp):
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
两个SELECT语句必须有相同的列数。这些列也必须具有相似的数据类型。另外,每个SELECT语句中的列必须以相同的顺序排列。
0
你可以使用存在于WHERE子句而不是IF语句:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
WHERE EXISTS (SELECT columns FROM table_name3)
0
不能内部使用if
声明这样的union
。
而不是使用if exists
,你可以简单地使用的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
使用内部联接,虽然时有一个小的差异。如果您碰巧匹配TUserData表中的多条记录,则不会随机丢弃除select @dataUserId=...
之外的所有结果,而是会返回每个匹配的结果。 (注意联合在当前表单中是毫无意义的,当你从第一个查询中的表中获取所有记录时,在第二个查询中得到的任何内容都将只是重复的,但我想你只是简化了第一个查询,它并没有真正得到一切从表)
0
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. 如何在不使用union的情况下编写Sql语句?
- 2. 如何使用if语句的情况下在SQL Server一起
- 3. 为什么IF NOT EXISTS语句不起作用?
- 4. IF语句不起作用
- 5. `If`语句不起作用
- 6. 如何在不使用if语句的情况下重写?
- 7. UNION SQL语句不起作用
- 8. UNION与IF语句
- 9. SQL情况/ if语句
- 10. C++ if/else if语句不起作用
- 11. 如何在两种情况下制作一个if语句?
- 12. 在没有if语句的情况下在Powershell中使用OR?
- 13. count ++在if语句中不起作用
- 14. scanf()在if语句中不起作用
- 15. $ .isEmptyObject在if语句中不起作用
- 16. Java Boolean在'IF'语句不起作用
- 17. if语句在php中不起作用
- 18. 问题使用if exists语句在sql
- 19. 在mysql不起作用的情况下
- 20. 我的if语句不起作用
- 21. Android的if语句不起作用
- 22. if jquery中的语句不起作用
- 23. WHILE中的IF语句不起作用
- 24. 我的if语句不起作用。
- 25. 简单的IF语句不起作用
- 26. 如何用IF EXISTS/IF NOT EXISTS语句添加外键?
- 27. 正确的if语句,并在这种情况下,在SQL Server
- 28. 如何在不使用BTEQ的情况下在Teradata中使用IF语句
- 29. 在“if”语句不起作用的情况下使用字符串进行比较
- 30. 为什么IF EXISTS不起作用?
这是不允许的,也是工会应该有两个选择语句 – hallie 2010-03-10 08:01:35
@hallie相同的列数:嗯,主要的问题是什么遵循union指令根本不是选择语句。 – Guffa 2010-03-10 08:28:06