MySQL知道公共(public)列,如何?

标签 mysql sql

我通常使用公共(public)列在两个表之间执行 JOIN,在本例中为“product_code”。

现在出现了这个没有连接的查询:

SELECT `rp_products`.`product_code`, `rp_log`.`customer_id`, `rp_products`.`product_name`
FROM rp_products, rp_log
WHERE (`rp_log`.`customer_id` = '111')
ORDER BY `rp_products`.`product_code` ASC, `rp_log`.`customer_id` ASC

返回:

product_code    customer_id     product_name
105             111             Paintballs 2000PBS
105             111             Paintballs 2000PBS
106             111             Gloves
106             111             Gloves

我想知道的是,它如何显示正确的“product_name”而不在表之间加入“product_code”? product_code 不是主键或类似的东西。 product_name 是表中两列的名称。

  • rp_log 存储 customer_id、product_code 和购买日期(此处未显示)。
  • rp_products 存储产品代码、价格(此处未显示)和产品名称。

感谢您的宝贵时间, 埃文。

最佳答案

您正在执行整个 rp_products 表和 rp_log 的子表的叉积,该子表的 customer_id 为 111。我猜你在 rp_log 中有两个 111 条目,在 rp_products 中有两个条目;然后连接中每个表(或子表)中的每个条目将与另一个表中的每个条目配对,以在结果集中生成四 (= 2 × 2) 行。

包括来自 rp_logrp_products 的更多列可能会为您澄清一些事情。

关于MySQL知道公共(public)列,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291440/

相关文章:

mysql - 从数据透视表返回单行

mysql - 如何在两列上设置唯一键并在 MySQL 中仍然具有自动递增的主索引?

MySQL数据库设计

php - MySQL Group By Product Id 但不是有序列号的产品

mysql - SQL 显示当年所有周(52)

sql - 如何有条件地在 ssdt 部署后脚本中包含大型脚本?

sql - SQL 查询中的数字整数舍入

sql - 如何跟踪 PostgreSQL 中任何函数的变化

php - 从 Android 上传图像到服务器不起作用

mysql - Rails 未索引位置