我的Mysql数据库中有5个表,其中t1的字段名称如data,id,cool和其他4个表的id和数据表示t2,t3,t4,t5。
我使用了连接和子查询,但我得到的结果是空的设置它不是强制性的,t2,t3,t4,t5表中的所有字段都填充.t4,t5,t3,t2可以为空我是对数据使用where子句如果t1 = t2 = t3 = t4 = t5的数据列,如果它在任何表中找到任何匹配数据,则从t1和id打印冷却,如果有,则从找到的表中打出数据,如果找到数据匹配在所有表格中,它打印所有表格统计信息,如
cool data.t1 id.t1
cool data.t2 id.t2
and so on
table t1
cool data id
0 xyz 1
table t2
data id
xyz 5
table t3
data id
xyz 4
table t4
data id
xyz 3
table t5
data id
xyz 2
期望的输出
cool data id
0 xyz 1
0 xyz 4
0 xyz 3
0 xyz 5
0 xyz 2
如果任何表为空,则说t5和t4比输出
cool data id
0 xyz 1
0 xyz 4
0 xyz 3
答案 0 :(得分:0)
我从问题中理解的是,您需要从表t1
获取相应表格中所有匹配的data
和id
列的所有其他表格的数据。
一种简单的方法是单独使用t1
加入每个表格,然后使用union all
合并所有结果。
SELECT t1.cool, t2.data, t2.id
FROM t1 INNER JOIN t2 ON (t1.id=t2.id) AND (t1.data=t2.data)
UNION ALL
SELECT t1.cool, t3.data, t3.id
FROM t1 INNER JOIN t3 ON (t1.id=t3.id) AND (t1.data=t3.data)
UNION ALL
SELECT t1.cool, t4.data, t4.id
FROM t1 INNER JOIN t4 ON (t1.id=t4.id) AND (t1.data=t4.data)
UNION ALL
SELECT t1.cool, t5.data, t5.id
FROM t1 INNER JOIN t5 ON (t1.id=t5.id) AND (t1.data=t5.data)
从你的例子中,很可能会有重复的记录要过滤它们,请使用像这样的不同 -
SELECT DISTINCT cool, data, id
FROM
(
-- above query here
)