Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 有限制地加入吗?_Mysql_Inner Join_Limit - Fatal编程技术网

Mysql 有限制地加入吗?

Mysql 有限制地加入吗?,mysql,inner-join,limit,Mysql,Inner Join,Limit,我有两个表,一个保存工具,另一个保存工具历史记录,比如位置和谁拥有它。我需要在此表上运行一个搜索问题,并已尝试此操作 SELECT tblmaskin.* FROM `tblmaskin` INNER JOIN tblmaskinhistorik ON tblmaskin.maskinId=tblmaskinhistorik.maskinId WHERE tblmaskin.maskin='".$_POST['sok']."' OR tblmaskinhistorik.var='".$_

我有两个表,一个保存工具,另一个保存工具历史记录,比如位置和谁拥有它。我需要在此表上运行一个搜索问题,并已尝试此操作

SELECT tblmaskin.* 
FROM `tblmaskin` 
INNER JOIN tblmaskinhistorik ON tblmaskin.maskinId=tblmaskinhistorik.maskinId 
WHERE tblmaskin.maskin='".$_POST['sok']."' 
OR tblmaskinhistorik.var='".$_POST['sok']."'
 OR  tblmaskinhistorik.anvandarnamn='".$_POST['sok']."'
但问题是,我只想在历史记录表中的最后一行中搜索该工具。例如,当您按位置搜索工具时,您只想获得当前存在的工具

有办法吗

.

在查询中按“您的字段”desc插入limit 1 order

旁注:看起来您使用的是PHP,而不是prepared语句,请签出或避免

实际上有一个关于这个+类似的事情已经解决了

您需要运行一个子查询来获取最新历史记录的id,假设id为max的记录是正确的记录,然后使用该id来获取正确的记录

注意:我已将您的内联php变量替换为


对查询运行EXPLAIN以确保其有效运行。

是否可能重复该查询被标记为负号的原因?我不知道这有什么问题?OP希望为每个工具获取一行,而不是一般的一行。不起作用,如果我搜索用户tblmaskinhistorik.anvandarnamn,我不会得到用户现在拥有的所有工具,我也会得到其他用户的工具。Thanx尝试我可能只是作弊,并在包含最后一个用户和位置的工具表中添加两个字段。但这真的让我很恼火,我讨厌放弃。@user2978137它应该是t_max.maxid=tblmaskinhistork.maskinhistId上的内部连接tblmaskinhistork检查了错误的id,试试看;我在您的问题中添加SQLFIDLE示例。另外,请添加预期结果。
SELECT tblmaskin.* 
FROM `tblmaskin` 
-- Select record from tblmaskinhistorik with the highest id
INNER JOIN (SELECT maskinId, MAX(maskinhistId) AS maxid
           FROM tblmaskinhistorik
           GROUP BY maskinId) AS t_max
    ON t_max.maskinId = tblmaskin.maskinId
-- Joining whole row
INNER JOIN tblmaskinhistorik ON t_max.maxid=tblmaskinhistorik.maskinhistId
WHERE tblmaskin.maskin=:sok 
    OR tblmaskinhistorik.var=:sok
    OR tblmaskinhistorik.anvandarnamn=:sok