【问题标题】:SELECT multiple columns from multiple tables and don't fill blank spaces从多个表中选择多个列并且不填充空格
【发布时间】:2021-11-05 20:24:55
【问题描述】:

我有一个我认为非常独特的用例。我希望能够在数据库上运行单个 SELECT 语句,从四个表中获取一列。我需要在每个不同的表上运行 where 子句,其中我有一个跨每个表的主子句,我无法 JOIN 因为每列中的数据长度不同,我不想要有重复的项目。

下面有一个 Select 语句的示例。我也理解这是否不可能。

SELECT s.service_id, u.id AS "user_id", h.mac_address, l.id AS "location_id" FROM services s
LEFT JOIN db.av_product ap ON s.product_id = ap.id
WHERE s.customer_code LIKE 'test_customer'
AND u.customer_code LIKE 'test_customer'
AND h.customer_code LIKE 'test_customer'
AND l.customer_code LIKE 'test_customer'
AND s.parent_id IS NULL 
AND s.active=0
AND ap.sku NOT REGEXP 'fakeregex'
AND l.active = "1"
AND h.hardware_id NOT IN ('44','45')
AND (u.support_user != 1 OR u.support_user IS NULL);

TIA!

【问题讨论】:

    标签: mysql sql select


    【解决方案1】:

    您需要对表使用连接来进行单个查询,或者您可以尝试使用 UNION 关键字合并的多个查询。

    如果您想进行单个查询,请查看 SELECT DISTINCTGROUP BY 以处理重复项。

    【讨论】:

    • 谢谢,这两个我都看了。从我目前所读的所有内容来看,这似乎是不可能的,我只需要独特的选择语句。
    【解决方案2】:

    搞砸了?

    你知道UNION是什么吗?

    UNION 运算符用于组合两个或多个SELECT 语句的结果集。

    UNION 中的每个SELECT 语句必须具有相同的列数;所以我们遇到了一个问题。 您可以使用WHERE 运算符处理它,所以我不会介入。 无论如何,UNION

    我们可以吗?

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;
    

    无论如何;你的解决方案是UNION,可能不像我写的那样。 你也可以试试这个链接。 https://www.w3schools.com/mysql/mysql_union.asp

    有一个干净的代码

    【讨论】:

    • 谢谢,我调查了工会。这不起作用的主要原因是因为我使用了 4 个表中的 4 列,每列都需要是它自己的列,Union 似乎将所有 4 列组合成一个列。此外,每一列都会产生不同数量的结果(即用户多于设备等)。从我目前所读的所有内容来看,这似乎是不可能的,我只需要独特的选择语句。
    猜你喜欢
    • 2011-01-21
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多