Mysql 合并两个表的结果

Mysql 合并两个表的结果,mysql,sql,select,distinct,union,Mysql,Sql,Select,Distinct,Union,我有两张桌子 TABLE_A +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | bid | int(10) unsigned | NO | PRI | 0 |

我有两张桌子

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) 显然我得到了错误的答案。为什么它得到了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 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 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 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 

这里有一个小提琴可以帮助您可视化结果:

您需要进行联合,过滤剩余的结果

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; 
试试这个

SELECT DISTINCT bid 
FROM   (SELECT bid 
        FROM   table_a 
        WHERE  uid = 123 
        UNION 
        SELECT bid 
        FROM   table_b 
        WHERE  uid = 123) AS temp; 
使用联合体 它用于组合两个或多个SELECT语句的结果

SELECT  bid FROM TABLE_A WHERE uid = 123
UNION 
SELECT  bid FROM TABLE_B WHERE uid = 123
使用联合体 它用于组合两个或多个SELECT语句的结果

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


协会如果不这样做,考虑提供适当的DDL和/或SqLFIDLE连同期望的结果塞提夫,你想得到两个表匹配的结果:<代码> UID=123 < /代码>?哦,是的,完全忘记联合:请把它作为答案,以便我可以接受。it@DibyenduDutta是的,这就是我想要的?如果不这样做,考虑提供适当的DDL和/或SqLFIDLE连同期望的结果塞提夫,你想得到两个表匹配的结果:<代码> UID=123 < /代码>?哦,是的,完全忘记联合:请把它作为答案,以便我可以接受。it@DibyenduDutta是的这就是我想要的我需要指定uid,更新你的答案请:)更新匹配条件uid出价必须匹配,我必须指定uid,如uid=123我需要指定uid,请更新你的答案:)更新匹配条件uid出价必须匹配,我必须指定uid,像uid=123I一样,我只需要确保最终结果不包含任何重复项,向每个选择添加distinct不会起作用,因为我需要它用于结果。请解释为什么我必须为派生表别名?我只需要确保最终结果不包含任何重复项,将distinct添加到每个select不会起作用,因为我需要它用于结果。请解释为什么我必须为派生表添加别名?它必须是distinctweel高兴您得到了答案:)它必须是distinctweel高兴您得到了答案:)