1

我对 MySql 比较陌生。

我有 2 个具有以下结构的表

products
{
pid-autoincrement,
pname
p_desc
}

services
{
sid-autoincrement
s_name
s_desc
}

我试图选择具有名称的产品或服务'%<somekeyword>%'

我正在使用查询:

SELECT DISTINCT products.*, 
                services.* 
           FROM products, services 
          WHERE products.pname 
                LIKE '%mob%' 
             OR services.s_name
                LIKE '%mob%'

但我得到了很多重复的结果。

尝试使用连接但无法获得解决方案。

有人可以帮我弄这个吗?

4

3 回答 3

3

你想使用 UNION,像这样:

SELECT DISTINCT products.pid-autoincrement AS id, 
                products.pname AS name, 
                products.p_desc AS desc 
           FROM products
          WHERE products.pname 
                LIKE '%mob%' 
UNION
SELECT DISTINCT services.sid-autoincrement AS id, 
                services.s_name AS name, 
                services.s_desc AS desc 
           FROM services
          WHERE services.s_name 
                LIKE '%mob%' 
于 2009-01-31T09:54:33.703 回答
1

您必须使用 UNION 运算符

因此您只能选择相同的列(因为只有一个结果)

或者您选择 2 次 - 2 个结果

于 2009-01-31T09:52:20.807 回答
1

因为这些表不相关,所以您必须使用 UNION 运算符(如 karlis 所说),而不是 JOIN。但是由于您显然希望一起处理产品和服务(至少在某些时候),您最好将它们放在一个表中并添加一列来区分它们,如下所示:

productsandservice [need better name]
{
id,
name,
desc,
isaservice
}
于 2009-01-31T10:03:17.523 回答