Mysql 如何从没有匹配列的多个表中进行选择

Mysql 如何从没有匹配列的多个表中进行选择,mysql,Mysql,我想在没有匹配列的三个表之间进行查询。我使用了UNION,但它将idDisplayNetwork和idDevice替换为idCountryin结果 SELECT idcountry, name FROM country UNION SELECT iddevice, name FROM device UNION SELECT name, iddisplaynetwork FROM displaynetwork 我想要这种

我想在没有匹配列的三个表之间进行查询。我使用了
UNION
,但它将
idDisplayNetwork
idDevice
替换为
idCountryin
结果

SELECT idcountry, 
       name 
FROM   country 
UNION 
SELECT iddevice, 
       name 
FROM   device 
UNION 
SELECT name, 
       iddisplaynetwork 
FROM   displaynetwork 
我想要这种输出

   { idCountry: '18ec1e07-9c89-4d2c-aefe-a7bd8966fab4',
    Name: 'Russia' },
   { idCountry: '31ceda51-9ce8-4380-bd41-c95f660e2ad4',
    Name: 'Turkey' },
   { idDevice: 'c0180c24-2df5-4082-b050-94dfaf1d5174',
    Name: 'Desktop and Laptops' },
  { idDisplayNetwork: '771434a0-0e6d-4206-90f5-f6abf85690d1',
    Name: 'search network' },
任何帮助都将不胜感激。

需要共享相同的专栏才能工作。 按照规定,第一个语句的列名用于其他结果集。

需要共享相同的列才能工作。
按照规定,第一个语句的列名将用于其他结果集。

如果结果集不共享相同的列(数据类型),则相互追加结果集没有任何意义。这是一个语义错误,与MySQL无关

如果要连接每个表而不是附加结果,请使用
JOIN
语句。 这假设所有表共享至少一个键以实现引用完整性

范例

SELECT n.*, d.*, c.* FROM displaynetwork n
JOIN device d
ON n.name = d.name
JOIN country c
ON n.name = c.name
更新:

尝试
UNION ALL
而不是
UNION

更新:

有两个表、颜色和名称、名称(名称、随机数)和颜色(id、颜色),以下语句正是您的输出:

SELECT id, color FROM colors
UNION ALL
select randomNumber, name FROM names

因此,对我来说,它不必是相同的别名或列名。但是我使用的是MariaDB,不知道这是否会有不同。

如果结果集不共享相同的列(数据类型),那么将它们相互追加是没有任何意义的。这是一个语义错误,与MySQL无关

如果要连接每个表而不是附加结果,请使用
JOIN
语句。 这假设所有表共享至少一个键以实现引用完整性

范例

SELECT n.*, d.*, c.* FROM displaynetwork n
JOIN device d
ON n.name = d.name
JOIN country c
ON n.name = c.name
更新:

尝试
UNION ALL
而不是
UNION

更新:

有两个表、颜色和名称、名称(名称、随机数)和颜色(id、颜色),以下语句正是您的输出:

SELECT id, color FROM colors
UNION ALL
select randomNumber, name FROM names

因此,对我来说,它不必是相同的别名或列名。但是我使用的是MariaDB,不知道这是否有不同。

如果这些ID相同,您应该在查询中重命名输出列,如下所示:

SELECT idcountry AS ID, 
       name 
FROM   country 
UNION 
SELECT iddevice AS ID, 
       name 
FROM   device 
UNION 
SELECT 
       iddisplaynetwork AS ID,
       name 
FROM   displaynetwork 

您刚刚发布的结果是不可能的,但您可以这样做:

SELECT idcountry AS ID, 
           name,
           'Country' AS Type
    FROM   country 
    UNION 
    SELECT iddevice AS ID, 
           name,
           'Device' AS Type
    FROM   device 
    UNION 
    SELECT 
           iddisplaynetwork AS ID,
           name,
           'Display Network' AS Type
    FROM   displaynetwork 
输出如下:

{ ID: '18ec1e07-9c89-4d2c-aefe-a7bd8966fab4',
    Name: 'Russia', type: 'Country' },
   { ID: '31ceda51-9ce8-4380-bd41-c95f660e2ad4',
    Name: 'Turkey', type: 'Country' },
   { ID: 'c0180c24-2df5-4082-b050-94dfaf1d5174',
    Name: 'Desktop and Laptops', type: 'Device' },
  { ID: '771434a0-0e6d-4206-90f5-f6abf85690d1',
    Name: 'search network', type: 'Display Network' },

如果这些ID相同,则应在查询中重命名输出列,如下所示:

SELECT idcountry AS ID, 
       name 
FROM   country 
UNION 
SELECT iddevice AS ID, 
       name 
FROM   device 
UNION 
SELECT 
       iddisplaynetwork AS ID,
       name 
FROM   displaynetwork 

您刚刚发布的结果是不可能的,但您可以这样做:

SELECT idcountry AS ID, 
           name,
           'Country' AS Type
    FROM   country 
    UNION 
    SELECT iddevice AS ID, 
           name,
           'Device' AS Type
    FROM   device 
    UNION 
    SELECT 
           iddisplaynetwork AS ID,
           name,
           'Display Network' AS Type
    FROM   displaynetwork 
输出如下:

{ ID: '18ec1e07-9c89-4d2c-aefe-a7bd8966fab4',
    Name: 'Russia', type: 'Country' },
   { ID: '31ceda51-9ce8-4380-bd41-c95f660e2ad4',
    Name: 'Turkey', type: 'Country' },
   { ID: 'c0180c24-2df5-4082-b050-94dfaf1d5174',
    Name: 'Desktop and Laptops', type: 'Device' },
  { ID: '771434a0-0e6d-4206-90f5-f6abf85690d1',
    Name: 'search network', type: 'Display Network' },

我真的很惊讶,在标题jquery和下面的mysql中,你在发布后没有检查你自己的问题。你能至少发布示例数据和你查询的期望输出吗?我已经更新了我的问题,并提到了我想要的输出@petermYou不能用任何关系数据库做到这一点。结果的所有行必须具有相同的列。@请检查我的更新答案!我真的很惊讶,在标题jquery和下面的mysql中,你在发布后没有检查你自己的问题。你能至少发布示例数据和你查询的期望输出吗?我已经更新了我的问题,并提到了我想要的输出@petermYou不能用任何关系数据库做到这一点。结果的所有行必须具有相同的列。@请检查我的更新答案!那么,如何编写这个查询@Seven schneidery你需要更好地解释你想要得到什么样的结果。将示例数据和预期结果添加到您的问题中。那么如何编写此查询@Seven schneidery您需要更好地解释您试图获得的结果。将示例数据和预期结果添加到您的问题中。您将其向后放置,类型应为
'Country
。您将其向后放置,类型应为
'Country