【问题标题】:Selecting multiple values different tables选择多个值不同的表
【发布时间】:2009-01-31 09:40:29
【问题描述】:

我对 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%'

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

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

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: join multiple-tables


    【解决方案1】:

    你想使用 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%' 
    

    【讨论】:

      【解决方案2】:

      你必须使用 UNION 运算符

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

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

      【讨论】:

        【解决方案3】:

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

        productsandservice [need better name]
        {
        id,
        name,
        desc,
        isaservice
        }
        

        【讨论】:

          猜你喜欢
          • 2011-02-16
          • 2018-07-31
          • 2011-06-01
          • 2010-10-11
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          • 2015-10-17
          • 2016-05-03
          相关资源
          最近更新 更多