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
。