sql - 我怎样才能采用两个单独的 sql 查询的 UNION 并仅获取 DISTINCT 值

标签 sql mysql

如何在 PHP 中从我的这两个查询中仅获取不同的值:

$query1 = "SELECT g.name, g.hash, g.views
                    FROM c7_groups g, c7_groups_affiliations ga
                    WHERE g.category >= 592 AND g.category <= 622
                        AND ga.affiliated_groups_hash = g.hash
                        AND LOWER(g.name) LIKE LOWER('%$school_name%')
                        ";
        $query2 = "SELECT g.name, g.hash, g.views
                    FROM c7_groups g, c7_groups_affiliations ga, c7_affiliations a
                    WHERE ga.affiliations_id = a.id
                        AND ga.groups_hash = g.hash
                        AND LOWER(a.name) LIKE LOWER('%$school_name%')";

我只想从这两个查询中获取不同的“g.hash”。如果我可以使用一个 sql 查询来完成这两项任务,那就更好了。

关于我的数据库表的详细信息如下: c7_groups: id int(10)
名称 varchar(255)
哈希 varchar(32) groups_categories_id int(10) View int(10)

c7_affiliations 标识整数(10) 名称 varchar(100)
groups_categories_id int(10)

c7_groups_affiliations groups_hash varchar(32) affiliated_groups_hash varchar(32)--------FKey to c7_groups.hash
affiliations_id int(10)--------------------FKey to c7_affiliations.id
id int(10)

affiliated_groups_hash 和 affiliations_id 都可以为空,或者我应该说一个或它们总是为空。如果一个组隶属于另一个组,则 affiliations_id 将为空,如果该组隶属于另一个从属关系,则 affiliated_groups_hash 将为空。

如果您需要有关任何内容的更多详细信息,请告诉我。

问候 泽山

最佳答案

只需在子选择中进行并集,然后按派生表进行分组。

select name,count(*) from
(
               SELECT g.name, g.hash, g.views
                    FROM c7_groups g, c7_groups_affiliations ga
                    WHERE g.category >= 592 AND g.category <= 622
                        AND ga.affiliated_groups_hash = g.hash
                        AND LOWER(g.name) LIKE LOWER('%$school_name%')
     UNION
               SELECT g.name, g.hash, g.views
                    FROM c7_groups g, c7_groups_affiliations ga, c7_affiliations a
                    WHERE ga.affiliations_id = a.id
                        AND ga.groups_hash = g.hash
                        AND LOWER(a.name) LIKE LOWER('%$school_name%')";
) as myTbl
group by name

关于sql - 我怎样才能采用两个单独的 sql 查询的 UNION 并仅获取 DISTINCT 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549595/

相关文章:

mysql - 多行根据多个id插入到sql中

php - 在 SQL 中存储标签并检索它

sql - 左连接的锂计数

c# - 为什么 Reverse() 不能转换成 SQL?

mysql - 按 max(date) 获取记录,其中 date 可以为 null

mysql - mysql中的类型问题

python - MySQL 和 Python - "image not found"- 永久修复?

php - 如何在 PHP + MYSQL 中验证字符串?

python - 复杂查询的设计模式

PHP MYSQL - 下拉选择依赖于先前的下拉菜单