[英]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.