MySQL-从2个不同的表和分组结果中选择产品id

MySQL-从2个不同的表和分组结果中选择产品id,mysql,group-by,Mysql,Group By,情况: 表1-##!!!!!!!!!!!!!!! virtuemart_product_id | product_special PRODUCTS_IDS | 0 or 1 表2-##(虚拟艺术品)产品(徽章) virtuemart_product_id | product_badge PRODUCTS_IDS | for this situation code 3 我有一个默认的SQL SELECT p.`virtuemart_product_id` FROM `#__virtuemart

情况:

表1-##!!!!!!!!!!!!!!!

virtuemart_product_id | product_special
PRODUCTS_IDS | 0 or 1
表2-##(虚拟艺术品)产品(徽章)

virtuemart_product_id | product_badge
PRODUCTS_IDS | for this situation code 3
我有一个默认的SQL

SELECT p.`virtuemart_product_id`
FROM `#__virtuemart_products` as p
WHERE p.`product_special` = 1;
结果是产品ID,如2,3225

我需要修改从两个不同表中选择ID的SQL语法,并返回一列

如果我这样修改语法:

SELECT p.`virtuemart_product_id`, badges_table.`virtuemart_product_id`
FROM `#__virtuemart_products` as p, `#__virtuemart_product_badges` as badges_table
WHERE p.`product_special` = 1 OR badges_table.`badge` = 3
结果是:

virtuemart_product_id | virtuemart_product_id
1 | 123
1 | 321
1 | 231
....
  • 为什么第一列是1,1,1,。。。?这里必须是产品id,没有产品特殊代码
  • 我需要将此结果分组到一列virtuemart\u product\u id中

  • 我做错了什么?

    我认为您要寻找的是从两个不同表中获取的ID的并集

        SELECT p.`virtuemart_product_id`, badges_table.`virtuemart_product_id`
        FROM `#__virtuemart_products` as p, `#__virtuemart_product_badges` as 
        badges_table
        WHERE p.`product_special` = 1 OR badges_table.`badge` = 3
    
    上面的查询所做的是,它在两个表之间执行联接,条件是product_special应为1或badge应为3。因此,一个表中的每一行都将与满足条件的另一个表中的每一行连接

    要从两个表中获取ID,可以根据条件从每个表中获取结果,然后对它们执行并集。比如说

         (SELECT `virtuemart_product_id` FROM `#__virtuemart_products` WHERE 
         `product_special` = 1) 
          UNION 
         (SELECT `virtuemart_product_id` FROM 
         `#__virtuemart_product_badges` WHERE `badge` = 3)
    
    我希望这有帮助