MySql从两个表中选择数据而不使用连接但只有一个where条件

时间:2014-08-06 08:34:45

标签: mysql sql

在MySql中,我可以为同一个用户从两个单独的表中选择数据而不使用连接并使用单个where声明吗?

实施例: 的表1

userSent | userId
      10 |      1

表2

userNew | userId
     15 |      1

示例sql

(
select userSent from table1
union
select userNew from table2
) where userId = 1;

我实际上是在尝试为同一个用户获取数据,但是来自不同的表。试图一次运行两个查询。

2 个答案:

答案 0 :(得分:1)

这是可能的,但我不推荐它。

你可以这样做

select user from
(
select userSent as user,userId from table1
union all
select userNew,userId from table2
) tab 
where userId = 1;

但请记住,您首先要完全读取这两个表,然后将它们组合起来(当数据量很大时,甚至可能在临时表中)并过滤此表。 表演噩梦!不要偷懒,解雇两个问题。或者甚至更好,加入这些查询。

答案 1 :(得分:1)

也许这可能有用:

SELECT t1.userSent, t2.userId
 FROM table1 AS t1
INNER JOIN table2 AS t2
   ON t1.userId = t2.userId
WHERE t2.userId = @userId

WHERE t2.userId = @userId是可选的,以防您要过滤特定用户的结果。

你不应该试图避免表连接。数据库引擎具有最佳优化连接查询的方法,特别是如果您还具有相应的外键。非连接查询可能在内部被重写为连接,但这取决于数据库引擎的工作方式,您必须不依赖。 (我认为MySQL引擎没有这些重写功能)