mysql - 使用 INNER JOIN 选择 DISTINCT

标签 mysql sql

大家好,
这听起来很简单,但我在这里遇到了问题。

有表格:

table_A
TA_id | TA_user | TA_hour | TA_date

table_B
TB_id | TB_name | TB_adress

这是查询:

$sql = mysql_query("SELECT 
                    DISTINCT TA_user 
                    FROM table_A 
                    INNER JOIN table_B ON table_B.id = table_A.TA_user 
                    WHERE TA_date LIKE '%$vardate%' 
                    ORDER BY TA_user ASC ");

当我在数组中运行 While 循环时,应该打印的 TB_name 会导致内部联接不起作用。

有什么想法吗?

最佳答案

在我看来,给定的表 B 实体有多个表 A 记录,对吗?

顺便说一下,你的列名很糟糕...table_B.id = table_A.TA_user???检查你的数据库的人如何知道这种关系的存在?但这不是重点。

无论如何,我猜您正在尝试返回在给定日期的 table_A 中具有记录的表 B 实体?

如果是这样,distinct 应该适合你。我可能会使用 group by 来代替,因为它通常更快。但如果我理解正确的话,这应该可以达到你想要的效果。

SELECT DISTINCT table_B.TB_name
    FROM table_A 
        INNER JOIN table_B
            ON table_B.TB_id = table_A.TA_user
    WHERE TA_date LIKE '%$vardate%'
    ORDER BY TA_user ASC;

而且,正如 @Gordon Linoff 上面所说,带有日期字段的 LIKE 是可疑的。他的想法对我来说似乎很合适。

关于mysql - 使用 INNER JOIN 选择 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970586/

相关文章:

使用 LIKE 和通配符匹配除空字符串以外的任何内容的 MySQL 查询

php - Laravel Eloquent 和查询生成器 "with (nolock)"

mysql - 为什么我需要 Java 中的 MySQL 连接器?

sql - 分层最大

php - 连接到不同的机器, 'Can' t connect through socket' Error

mysql - Entity Framework 找不到版本。即使安装了 DLL、连接器和框架

mysql - 如何提高跨三个连接表的 DISTINCT 选择的性能?

mysql - SQL 提取用户组 ID,仅包含指定的用户 ID

java - 如何对特定记录中的数据求和?

mysql - SQL 查询更新一系列字段 - MySQL 表