猿问

Select 语句回显行两次

我的数据库中有 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 个结果(不应该这样做)。这是我得到的不需要的结果:


22

10

88

10

22

20

88

20

为什么要这样做?结果不应该是这样,而应该是这样:


22

88

10

20

请帮我解决这个问题。这是我的代码:


<?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>


喵喵时光机
浏览 194回答 3
3回答

ITMISS

使用UNION概念。为此,您可以使用 UNION 或 UNION ALL 关键字。笔记:使用UNION 时,将删除重复记录,因此如果您想保留所有记录,请使用 UNION ALL。您不需要为此创建子查询。SELECT taid AS ID, tanum AS NUM, tarelation AS RELATION FROM tableA&nbsp;UNION ALLSELECT tbid AS ID, tbnum AS NUM, tbrelation AS RELATION FROM tableB;

青春有我

您的 SQL 查询不会生成仅包含您作为输出显示的tanum和tbnum值的列表。如果您想要所有表中仅包含tanum和tbnum值的列表(如您所希望的结果所示),可以这样做:select tanum from TableAunionselect tbnum from TableB;

慕沐林林

我不确定这是否是您要查找的内容,但您似乎只想附加这两个表:select a.*from(select taid as ID,tanum as NUM,tarelation as RELATION from tableAUNIONselect tbid as ID,tbnum as NUM,tbrelation as RELATION from tableB)a
随时随地看视频慕课网APP
我要回答