我有第一个查询。
SELECT item.id, item.name, item.description,
item.tnURL, item.spec_id, item.item_type, item.sub_category
FROM item, fb_item_promo
WHERE fb_item_promo.item_id=item.id;
和第二个查询。
SELECT item.id, item.name, item.description,
item.tnURL, item.spec_id, item.item_type, item.sub_category
FROM item
WHERE item.description LIKE '%package%';
我需要结合第一个查询结果和第二个查询结果。我怎么能以更快的方式做到这一点?
@Fosco您的查询似乎有效,但如果我想在 item.name 上为所有结果添加搜索功能呢?我试过这个,但它仍然获得了所有 fb_item_promo.item_id 结果。
新查询:
SELECT item.id, item.name, item.description, item.tnURL,item.spec_id,
item.item_type, item.sub_category
FROM item
LEFT JOIN fb_item_promo
ON fb_item_promo.item_id = item.id
WHERE fb_item_promo.item_id IS NOT NULL
OR item.description LIKE '%package%'
AND item.name LIKE '%my item name%'
结果是它搜索了正确的项目,但仍然返回存在的 fb_item_promo.item_id 上的所有项目。如何在该结果上运行过滤器?
答案 0 :(得分:3)
SELECT item.id, item.name, item.description, item.tnURL,
item.spec_id, item.item_type, item.sub_category
FROM
item, fb_item_promo WHERE fb_item_promo.item_id=item.id;
UNION ALL
SELECT item.id, item.name, item.description, item.tnURL,
item.spec_id, item.item_type, item.sub_category
FROM
item WHERE item.description LIKE '%package%';
答案 1 :(得分:3)
从第一个查询中包含所有记录,从第二个查询中添加记录是没有意义的。第二个查询中的记录已经包含在第一个查询中。
我认为这就是你所需要的:
SELECT item.id, item.name, item.description,
item.tnURL, item.spec_id, item.item_type,
item.sub_category
FROM item
left JOIN fb_item_promo ON fb_item_promo.item_id=item.id
WHERE fb_item_promo.item_id is not null
or item.description LIKE '%package%'
答案 2 :(得分:1)
select item.id,
item.name,
item.description,
item.tnURL,
item.spec_id,
item.item_type,
item.sub_category
from
item
inner join
fb_item_promo on item.id = fb_item_promo.item_id
where
item.description like '%package%'
答案 3 :(得分:1)
您可以在没有UNION
的一个查询中执行此操作:
select i.id,
i.name,
i.description,
i.tnURL,
i.spec_id,
i.item_type,
i.sub_category
from item i
left join fb_item_promo ip on i.id = ip.item_id
where ip.item_id is not null
or i.description LIKE '%package%';
答案 4 :(得分:1)
你可以使用子查询而不是内连接:
SELECT item.id, item.name, item.description,
item.tnURL, item.spec_id, item.item_type, item.sub_category
FROM item
WHERE item.description LIKE '%package%'
AND item.id IN (SELECT item_id FROM fb_item_promo);