【问题标题】:Concatenate two columns from one table and look for where it does not show up in another table mysql连接一个表中的两列并查找它没有出现在另一个表中的位置 mysql
【发布时间】:2021-12-22 08:31:50
【问题描述】:

我想连接 table1 中的两列并检查它们是否不在 table2 中。 table1 有列 fnamename,我想连接所有 fnamelname 并检查查找不在 table2 名称列中的那些。我可以检查 fname 单独是否没有显示在另一个表 2 中,我还可以将 fnamelname 连接为表 1 中的 qname 列,但是当我连接为 qname 并检查 qname 是否不在表二然后我得到一个错误Error in query (1054): Unknown column 'qname' in 'IN/ALL/ANY subquery'

这是我的查询

SELECT CONCAT(table1.fname, " ", table1.lname) AS qname from table1 
WHERE qname NOT IN
    (SELECT table2.name 
     FROM table2);

【问题讨论】:

    标签: mysql concatenation


    【解决方案1】:

    您需要在 where 子句中使用 concat 函数,因为字段 qname 在查询处理的那个阶段不存在。

    SELECT CONCAT(table1.fname, " ", table1.lname) AS qname from table1 
    WHERE CONCAT(table1.fname, " ", table1.lname) NOT IN
        (SELECT table2.name 
         FROM table2);
    

    您也可以使用左连接查询来解决相同的问题。

    SELECT CONCAT(table1.fname, " ", table1.lname) AS qname 
    FROM table1 
    LEFT JOIN table2
      ON CONCAT(table1.fname, " ", table1.lname) = table2.name
    WHERE table2.name IS NULL;
    

    【讨论】:

    • 感谢戴夫。这行得通!不过我用的是第一个
    猜你喜欢
    • 1970-01-01
    • 2020-06-23
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多