繁体   English   中英

合并两个表的结果

[英]Combine result of two tables

我有两张桌子

TABLE_A
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| bid   | int(10) unsigned | NO   | PRI | 0       |       |
| uid   | int(10) unsigned | NO   | PRI | 0       |       |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

TABLE_B
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| bid   | int(10) unsigned | NO   | PRI | 0       |       |
| uid   | int(10) unsigned | NO   | PRI | 0       |       |
+-------+------------------+------+-----+---------+-------+

当uid = 123时,我想从两个表中选择出价; 注意:每个表都有大约15个结果,并且两个表中都存在一些,我需要区别选择。 所以我尝试了这个:

SELECT DISTINCT ta.bid, 
                tb.bid 
FROM   table_a AS ta 
       JOIN table_b AS tb using (uid) 
WHERE  uid = 123; 

我显然得到了错误的答案。 为什么它得到150多个结果而不是30个?

SELECT ta.bid, 
       tb.bid 
FROM   table_a AS ta, 
       table_b AS tb 
WHERE  ta.uid = tb.uid 
       AND ta.uid = 123 
GROUP  BY ta.bid, 
          tb.bid 

第二种方法是

SELECT ta.bid, 
       tb.bid 
FROM   table_a AS ta 
       INNER JOIN table_b AS tb 
               ON ( ta.uid = tb.uid ) 
                  AND ( ta.uid = 123 ) 

尝试这个

SELECT DISTINCT bid FROM TABLE_A WHERE uid = 123
UNION 
SELECT DISTINCT bid FROM TABLE_B WHERE uid = 123

要么

SELECT DISTINCT bid 
FROM (SELECT bid FROM TABLE_A WHERE uid = 123
      UNION 
      SELECT bid FROM TABLE_B WHERE uid = 123
     ) AS A

尝试这个

select tb1.bid, tb2.bid from TABLE_A  AS tb1  , TABLE_B  AS tb2 
where tb1.bid = tb2.bid 
AND tb1.bid = 123
group by tb1.bid

您需要进行合并,以过滤其余结果

SELECT bid 
FROM   table_a 
WHERE  uid = 123 
UNION 
SELECT bid 
FROM   table_b 
WHERE  uid = 123 

这是帮助您可视化结果的小提琴: http : //sqlfiddle.com/#!2/27eea5/4

USE UNION其用于合并两个或多个SELECT语句的结果。

SELECT  bid FROM TABLE_A WHERE uid = 123
UNION 
SELECT  bid FROM TABLE_B WHERE uid = 123

尝试这个..

SELECT DISTINCT bid 
FROM   (SELECT bid 
        FROM   table_a 
        WHERE  uid = 123 
        UNION 
        SELECT bid 
        FROM   table_b 
        WHERE  uid = 123) AS temp; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM