在 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_guid
在 SELECT
中没有真正意义,因为不清楚它应该来自哪一行。也许您想要 MIN(c.user_guid)
、MAX()
或 GROUP_CONCAT()
.
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_guid
在 SELECT
中没有真正意义,因为不清楚它应该来自哪一行。也许您想要 MIN(c.user_guid)
、MAX()
或 GROUP_CONCAT()
.