如何使用sql从两个表中选择行

时间:2012-12-15 09:04:23

标签: sql

我想从表A中选择UserId=1和表B 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

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

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

4 个答案:

答案 0 :(得分:2)

  

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

听起来,我要求您从两个表中请求过滤的union值的session,并且如您所希望的那样,您需要union而不是union all union all union实际上是一个比select session from table_a where userid = 1 union select session from table_b where username = xxx 更常见的要求:

{{1}}

答案 1 :(得分:1)

以下是SQL Server的TSql。另请尝试了解table JOIN。以下是some good examples

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'

答案 2 :(得分:1)

试试这个, 抱歉,如果有任何语法错误。

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;

希望它会对你有所帮助。谢谢。 !!

答案 3 :(得分:-1)

Mysql有一种方法可以做到这一点。 Check out this


我会做的最好:

SELECT `table1`.`column`, `table2`.`column` FROM `table1`, `table2` WHERE conditon