我遇到了一个问题,当使用max命令查询时,数据没有列出(没有受影响的行),但没有max命令,没有问题(显示2行),列出了数据。有人知道根本原因吗?我使用的是10.1.30-MariaDB。这是问题命令;
SELECT ib.Id AS 'IB_RecID'
FROM (csm_installbase ib
LEFT JOIN systeminformation si1 ON ((si1.IB_RecID = ib.Id))
)
WHERE (si1.Id IN (SELECT MAX(si3.Id)
FROM systeminformation si3
GROUP BY si3.IB_RecID))
列出的数据不带max命令;
SELECT ib.Id AS 'IB_RecID'
FROM (csm_installbase ib
LEFT JOIN systeminformation si1 ON ((si1.IB_RecID = ib.Id))
)
WHERE (si1.Id IN (SELECT si3.Id
FROM systeminformation si3
GROUP BY si3.IB_RecID)
)
我尝试使用LIMIT,但提示“此版本的MySQL尚不支持'LIMIT & IN/ALL/ANY/SOME子查询”错误框。
提前感谢您的任何帮助和努力。
1条答案
按热度按时间5sxhfpxr1#
测试下一个查询:
对于你的意见左联接和内部联接。我应该替换什么?实际上左联接有10+从另一个表,但跳过它作为不相关。我应该添加内部联接为它?- nurul
您的正式查询是:
什么是左联接?
它取
t1
中的所有行,并将t2
中与{condition}
匹配的行添加到每行。然后,对于t1
中在t2
中没有匹配行的每行,它将NULL添加到所有相应的列中。然后应用WHERE中的条件,将
t2
中的列与某个值进行比较。但对于t1
中的行,如果在t2
中没有匹配的行,则将为WHERE NULL = {value}
。此表达式将生成NULL,并将其视为FALSE。因此,将从行集中删除所有此类行。只有t1
中的行与t2
中的行匹配时,才可能返回这些行。因此,在这种情况下,LEFT JOIN充当INNER JOIN。并且可以编辑此联接类型。如果有其他的连接,那么你可以用同样的逻辑来研究它们。也许其他的外部连接实际上也是内部连接。