Mysql 限制子查询的SQL内部联接不影响查询

Mysql 限制子查询的SQL内部联接不影响查询,mysql,Mysql,我正在MySQL中运行一个查询,其中包含一个对子查询有限制的内部联接 问题是,子查询的限制会影响返回的行数 我想从表1 tickets中选择所有行,其中ticket_中的最后一行更新了相关的t.ticketnumber=tu.ticketnumber在contact_name列中不是数字 但是显示的结果只返回1行 票证更新中有多行与基于票证的票证中的每一行相关。票证编号=票证更新。票证编号` 联系人姓名列可以是字符串或整数。我从另一个SO帖子中找到concat,contact_name*1 co

我正在MySQL中运行一个查询,其中包含一个对子查询有限制的内部联接

问题是,子查询的限制会影响返回的行数

我想从表1 tickets中选择所有行,其中ticket_中的最后一行更新了相关的t.ticketnumber=tu.ticketnumber在contact_name列中不是数字

但是显示的结果只返回1行

票证更新中有多行与基于票证的票证中的每一行相关。票证编号=票证更新。票证编号`

联系人姓名列可以是字符串或整数。我从另一个SO帖子中找到concat,contact_name*1 contact_name,它告诉我值是否为数字


因此,我想在ticket\u updates中为ticket中的每一行提取最新的row ORDER BY sequence DESC,并查看contact\u name是否不是数字,因为您的查询选择了一行,因为当您结束时,您的子查询仅限于一个结果

您想要的可能与中的类似,我假设您想要序列值最大的条目,如果相反,则更改为MIN

对于子查询,应该从引用的答案中最短的、更优化的查询中进行调整,但让我们先看看这一项是否有效:

SELECT t.*
FROM tickets t
INNER JOIN ( SELECT ticketnumber, MAX(tu.sequence) AS maxSequence
        FROM ticket_updates tu
        WHERE tu.type = 'update' AND concat('', tu.contact_name * 1) <> tu.contact_name
        GROUP BY ticketnumber ) tu2
    ON (t.ticketnumber = tu2.ticketnumber)
WHERE t.status <> 'Completed' 
AND LOWER(t.department) = 'support';

您是否尝试过使用SELECT DISTINCT并删除子查询的限制1?是否确实使用区分大小写的排序规则?还有concat,联系人姓名*1联系人姓名?什么这不太好。请参阅我的更新,希望能澄清一点。您的查询乍一看不会出错,因此如果它只返回一行,这是因为您只有一张支持部门的状态为“已完成”的票据。如果没有,请显示您的数据。您也可以使用max而不是limit,但这取决于表中的行。不留下任何注释的连续投票者很有趣。。让你的挫败感消失吧,如果我至少能帮上忙的话;啊哈,我知道你做了什么。我刚刚意识到子查询不起作用,我需要删除concat,tu.contact_name*1 tu.contact_name子句,并获取具有最大序列的行,然后检查contac_name列是否是数字列,或者没有任何关于如何实现这一点的想法?实际上,contact_name上的concat似乎可以用于测试是否是数字列,在链接的示例中是这样的
SELECT t.*
FROM tickets t
INNER JOIN ( SELECT ticketnumber, MAX(tu.sequence) AS maxSequence
        FROM ticket_updates tu
        WHERE tu.type = 'update' AND concat('', tu.contact_name * 1) <> tu.contact_name
        GROUP BY ticketnumber ) tu2
    ON (t.ticketnumber = tu2.ticketnumber)
WHERE t.status <> 'Completed' 
AND LOWER(t.department) = 'support';