我创建了2个简单的表。 tableA和表B,都只有1列'po'。 我正在尝试使用FULL OUTER JOIN将2表组合在一起。
错误输出为警告:mysqli_fetch_array()期望参数1为mysqli_result。
所以我猜我的查询错了。感谢任何帮助!
<?php
include 'db.php';
$sqlcount="SELECT DISTINCT po FROM testonly FULL OUTER JOIN testonly2 ON testonly.po=testonly2.po";
$resultcount = mysqli_query($conn,$sqlcount);
while($row = mysqli_fetch_array($resultcount)){
echo $row['po'];
}
?>
答案 0 :(得分:1)
如果你需要一个联合表,你需要和联合你不能使用FULL OUTER JOIN,因为这在mysql中不可用..但你可以模拟和联合选择
union子句意味着只为两个表合并了distint值..
$sqlcount="SELECT po
FROM testonly
UNION
testonly2 ";
union all意味着从两个表中选择所有行(也是重复的)
$sqlcount="SELECT po
FROM testonly
UNION ALL
testonly2 ";
否则,如果你需要一个真正的连接(在同一行的列上)你可以使用JOIN(内连接..或左连接,或右),这取决于你需要加入表的方式
这是内连接
$sqlcount="SELECT DISTINCT t1.po, t2.po
FROM testonly t1 INNER JOIN testonly2 t2 ON testonly.po=testonly2.po";
答案 1 :(得分:1)
MySQL没有内置FULL OUTER JOIN
。但是,您可以通过以下方式模拟您的查询:
SELECT * FROM testonly t1
LEFT JOIN testonly2 t2 ON t1.po = t2.po
UNION -- use UNION ALL to retain common rows
SELECT * FROM testonly t1
RIGHT JOIN testonly2 t2 ON t1.po = t2.po
PHP代码:
$sqlcount = "SELECT * FROM testonly t1 LEFT JOIN testonly2 t2 ON t1.po = t2.po UNION ALL SELECT * FROM testonly t1 RIGHT JOIN testonly2 t2 ON t1.po = t2.po";
请在此处阅读以获取更多信息:Full Outer Join in MySQL