我的数据库中有 2 个表。表tableA看起来像这样: taid | tanum | tarelation--------------------------- 30 | 22 | 101 31 | 88 | 101表格tableB如下所示: tbid | tbnum | tbrelation--------------------------- 1 | 10 | 101 2 | 20 | 101我想回显所有行tanum并且tbnum- 应该只回显 4 个结果,但是我的代码将每个回显的结果加倍,所以它总共显示 8 个结果(不应该这样做)。这是我得到的不需要的结果:2210881022208820为什么要这样做?结果不应该是这样,而应该是这样:22881020请帮我解决这个问题。这是我的代码:<?php$columns = [];$stmt = $conn->prepare(" SELECT tableA.*, tableB.* FROM tableA INNER JOIN tableB ON tableA.tarelation = tableB.tbrelation");$stmt->execute();$result = $stmt->get_result();while($row = $result->fetch_object()) { $columns[] = $row;}$stmt->close();?><div><?php foreach($columns as $column): ?> <div><?php echo $column->tanum; ?></div> <div><?php echo $column->tbnum; ?></div><?php endforeach; ?></div>
3 回答
ITMISS
TA贡献1871条经验 获得超8个赞
使用UNION概念。为此,您可以使用 UNION 或 UNION ALL 关键字。
笔记:
使用UNION 时,将删除重复记录,因此如果您想保留所有记录,请使用 UNION ALL。
您不需要为此创建子查询。
SELECT taid AS ID, tanum AS NUM, tarelation AS RELATION FROM tableA
UNION ALL
SELECT tbid AS ID, tbnum AS NUM, tbrelation AS RELATION FROM tableB;
青春有我
TA贡献1784条经验 获得超8个赞
您的 SQL 查询不会生成仅包含您作为输出显示的tanum和tbnum值的列表。如果您想要所有表中仅包含tanum和tbnum值的列表(如您所希望的结果所示),可以这样做:
select tanum from TableA
union
select tbnum from TableB;
慕沐林林
TA贡献2016条经验 获得超9个赞
我不确定这是否是您要查找的内容,但您似乎只想附加这两个表:
select a.*
from
(select taid as ID,tanum as NUM,tarelation as RELATION from tableA
UNION
select tbid as ID,tbnum as NUM,tbrelation as RELATION from tableB)a
- 3 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消