MySQL-从2个不同的表和分组结果中选择产品id
情况: 表1-##!!!!!!!!!!!!!!!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
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
....
我做错了什么?我认为您要寻找的是从两个不同表中获取的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)
我希望这有帮助