[英]php/mysql Merge 2 tables with same Columns correctly
編輯:感謝 JoseCarlosPB 這里是解決方案:
SELECT
(select count(DISTINCT userscount) AS duplicates from users1)
+
(select count(DISTINCT userscount) AS duplicates from users2) AS duplicates
FROM dual;
所以我有 2 個表和一個 mysql 語句,我想合並 2 個表,但兩者都有相同的列。我認為 PHP 代碼沒有什么可做的,我認為問題出在 mysql 語句中。
我的代碼有效(沒有錯誤),但它給出了意外的輸出。我只是想正確計算用戶數,這就是我的意思:table1 有 32 個用戶,table2 有 44 個用戶我認為輸出將是 76 個用戶,但它是 3244
PHP:
include 'conn00.php';
$sql = "select DISTINCT userscount, count(DISTINCT userscount) AS duplicates from users1 UNION ALL
select DISTINCT userscount, count(DISTINCT userscount) AS duplicates from users2";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["duplicates"];
}
} else {
}
表格1:
users1
32
表2:
users2
44
輸出:3244 我希望輸出是 76
如果解決方案在 mysql 中會更好 bcz 我有更多類似的 sql 語句,我想將解決方案應用於所有這些。 謝謝回答
我認為你可以這樣做,就像alistaircol說的
SELECT
(select count(DISTINCT userscount) AS duplicates from users1)
+
(select count(DISTINCT userscount) AS duplicates from users2) AS duplicates
FROM dual;
請檢查您需要合並兩個具有相同列名稱的 MYSQL 表的文章
與此相比,您需要將計數移到 UNION 之外才能按預期工作
也許你可以為你的查詢嘗試這樣的事情:
SELECT
(select count(DISTINCT userscount) AS duplicates from users1 group by usercount)
+
(select count(DISTINCT userscount) AS duplicates from users2 group by usercount)
FROM dual;
DUAL 純粹是為了方便那些要求所有 SELECT 語句都應該有 FROM 和其他可能的子句的人。 MySQL 可能會忽略這些子句。 如果沒有引用表,MySQL 不需要 FROM DUAL。
關於DUAL
更多信息: https : //dev.mysql.com/doc/refman/8.0/en/select.html
也許您可以將代碼查詢更改為此以求和整個計數值
include 'conn00.php';
$sql = "select sum(i) as duplicates from (
select count(DISTINCT userscount) as i from users1 union all
select count(DISTINCT userscount) as i from users2
) x";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["duplicates"];
}
} else {
}
我不確定查詢的語義是否正確,但語法必須是這樣的(WHERE 子句在 JOIN 和 ON 之后):
SELECT users1.text1, users2.name,users2.email,
users1.username
FROM users1
INNER JOIN users2
ON users1.text1=users2.text1
WHERE users1.username = $_SESSION[username]
SELECT * from ( (select count(DISTINCT userscount) AS duplicates from users1) union all (select count(DISTINCT userscount) AS duplicates from users2) ) as duplicates
您也可以通過這種方式合並。希望對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.