在 MySQL 中使用 JOINS,会创建一个额外的 table?

Using JOINS in MySQL, an additional table is created?

SELECT d.user_guid AS dUserID, c.user_guid AS cUserID, d.dog_guid AS dDogID,
c.dog_guid AS dDogID, count(test_name)
FROM dogs d LEFT JOIN complete_tests c
ON d.dog_guid=c.dog_guid
GROUP BY d.dog_guid;

编写此代码时,创建了一个 table 并标记为..."dDOGId_1"

输出几乎相同,除了一些行中有单词 "non"

这是 JOIN 发生的地方吗?还有这是从哪里来的?创建此附加列的代码是否有问题?

发生这种情况是因为您有 2 个列标有相同的名称。所以第二个默认为_1

与加入无关

什么?你看起来很困惑。这是你的 select:

SELECT d.user_guid AS dUserID, c.user_guid AS cUserID, d.dog_guid AS dDogID,
       c.dog_guid AS dDogID, count(test_name)

没有添加table。您的结果有两列,名为 dDogID。为了区分它们,应用程序添加了 _1.

但是,完全没有必要同时包含两者,因为 left join 暗示它们是相同的。 count() 应该计算匹配项。我假设这是您想要的查询:

SELECT d.user_guid AS dUserID, d.dog_guid AS dDogID,
       count(c.test_name)
FROM dogs d LEFT JOIN
     complete_tests c
     ON d.dog_guid=c.dog_guid
GROUP BY d.dog_guid;

c.user_guidSELECT 中没有真正意义,因为不清楚它应该来自哪一行。也许您想要 MIN(c.user_guid)MAX()GROUP_CONCAT().