首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL内嵌有限制吗?

问MYSQL内嵌有限制吗?
EN

Stack Overflow用户
提问于 2014-10-20 10:00:45
回答 2查看 113关注 0票数 0

我有两张桌子,一张是存放工具,另一张是工具历史记录,比如位置和谁有。我需要在这个表上运行一个搜索问题,并且已经尝试过了

代码语言:javascript
复制
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']."'

但问题是,我只想在历史表中搜索最后插入的那个工具行。例如,当您按位置搜索工具时,您只想获得现在存在的工具。

有办法吗?

SQL示例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-20 10:19:39

附带注意:看起来您使用的是PHP,而不是准备好的语句,请查看http://php.net/manual/en/pdo.prepared-statements.php或http://php.net/manual/en/mysqli.quickstart.prepared-statements.php以避免使用http://en.wikipedia.org/wiki/SQL_injection。

实际上有一个关于这个的官方MySQL文档中的文章,类似的事情已经解决了,这里和这里。

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

注意:我已经用http://php.net/manual/en/pdo.prepared-statements.php#example-952替换了内联的php变量

代码语言:javascript
复制
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

在查询上运行EXPLAIN,以确保它高效工作。

票数 1
EN

Stack Overflow用户

发布于 2014-10-20 10:05:01

在查询中插入limit 1 order by 'your field' desc

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26462966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档