2

我想从表 A whereUserId=1和表 B where中选择行UserName=xxx

如果 A 和 B 的行相同,我们可以使用 group。

表 A

Session    UserId
-----------------
1           1
2           2

表 B

Session    Username
-------------------
1           xxx
11          xxx
12          xxx

用户表

UserId    Username
------------------
1         xxx

现在我想从表 awhere userid = 1和表 b中获取行where username = xxx。如果来自 a 和 b 的会话相同,我们可以将其分组。

Session
==========
1
11
12
4

4 回答 4

2

现在我想从用户 ID = 1 的表 a 和用户名 = xxx 的表 b 中获取行。如果来自 a 和 b 的会话相同,我们可以将其分组。

在我看来,您正在要求从两个表union中筛选session出的值,并且当您想要不同的集合时,您确实想要union而不是union allunion all实际上是比 更常见的要求union):

select session from table_a where userid = 1
union
select session from table_b where username = xxx
于 2012-12-15T09:45:38.233 回答
2

试试这个,如果有任何语法错误,对不起。

SELECT A.UserId, B.Username FROM A LEFT JOIN B ON A.Session= B.Session GROUP BY A.Session;

它将从表 A 和 B 中检索与会话匹配的所有记录。

现在,将您的附加条件包含到现有查询中。像这样的东西......

SELECT A.UserId, B.Username FROM A LEFT JOIN B ON A.Session= B.Session 
WHERE A.UserId = 1 AND B.Username = 'xxx' GROUP BY A.Session;

希望它会帮助你。谢谢。!!

于 2012-12-15T09:18:45.557 回答
1

以下是TSql针对 SQL Server 的。也试着了解一下table JOIN。这里有一些很好的例子

SELECT A.Session, A.UserId
FROM A JOIN B ON A.Session = B.Session --Joining A and B using Session here
WHERE A.UserId = 1 AND B.Username = 'xxx'
于 2012-12-15T09:16:52.417 回答
-1

Mysql 有办法做到这一点。看看这个


我会做的最好的:

SELECT `table1`.`column`, `table2`.`column` FROM `table1`, `table2` WHERE conditon
于 2012-12-15T09:06:46.693 回答