Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/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
Php 如何检查另一个表中是否存在值';最后N行是什么?_Php_Mysql_Sql_Database - Fatal编程技术网

Php 如何检查另一个表中是否存在值';最后N行是什么?

Php 如何检查另一个表中是否存在值';最后N行是什么?,php,mysql,sql,database,Php,Mysql,Sql,Database,used包含已用项目的列表。我不希望该物品再次被使用,如果它是最后10个使用的物品之一 通过谷歌搜索,我似乎需要一个子查询,但无法使其工作。这是我到目前为止试过的 $check = mysqli_query($db, 'SELECT `id` FROM ( SELECT `id` FROM `used`

used
包含已用项目的列表。我不希望该物品再次被使用,如果它是最后10个使用的物品之一

通过谷歌搜索,我似乎需要一个子查询,但无法使其工作。这是我到目前为止试过的

$check = mysqli_query($db, 'SELECT `id` 
                            FROM (
                                SELECT `id` 
                                FROM `used` 
                                ORDER BY `id` DESC 
                                LIMIT 10) 
                            WHERE `item` = ' . $id);
在此之前,我使用了以下方法

$check = mysqli_query($db, 'SELECT `id` 
                            FROM `used` 
                            WHERE `item` = ' . $id . ' 
                            ORDER BY `id` DESC 
                            LIMIT 10);

但是,这似乎只是将结果限制为10,因此如果使用了某个项目,则始终会返回
true
,即使在最后10个项目之外也会返回
。听起来您想检查该项目
$id
是否在
已使用的
表中的最后10个项目中。此查询应执行以下操作:

$check = mysqli_query($db, "SELECT $id NOT IN (SELECT item 
                                               FROM used 
                                               ORDER BY id DESC 
                                               LIMIT 10)");
如果
$id
的值不在
使用的
表中
项的最后10个值中,或者
0
的值中,则此查询将返回
1

对于在
子查询中不支持
限制
的MySQL版本,您可以使用与此查询相同的
左连接
,它将返回相同的结果:

SELECT IF(b.item IS NULL, 1, 0) 
FROM used a 
LEFT JOIN (SELECT item 
           FROM used 
           ORDER BY id DESC LIMIT 10) b ON b.item = a.item 
WHERE a.item = $id 

听起来您想检查项目
$id
是否在
已使用的
表中的最后10个项目中。此查询应执行以下操作:

$check = mysqli_query($db, "SELECT $id NOT IN (SELECT item 
                                               FROM used 
                                               ORDER BY id DESC 
                                               LIMIT 10)");
如果
$id
的值不在
使用的
表中
项的最后10个值中,或者
0
的值中,则此查询将返回
1

对于在
子查询中不支持
限制
的MySQL版本,您可以使用与此查询相同的
左连接
,它将返回相同的结果:

SELECT IF(b.item IS NULL, 1, 0) 
FROM used a 
LEFT JOIN (SELECT item 
           FROM used 
           ORDER BY id DESC LIMIT 10) b ON b.item = a.item 
WHERE a.item = $id 

您可以通过连接来执行此操作:

$check = mysqli_query($db, 'SELECT u.id
FROM used AS u
JOIN (
   SELECT id
   FROM used
  ORDER BY id DESC LIMIT 10) AS ub
USING (id)
WHERE item = ' . $id);

您可以通过连接来执行此操作:

$check = mysqli_query($db, 'SELECT u.id
FROM used AS u
JOIN (
   SELECT id
   FROM used
  ORDER BY id DESC LIMIT 10) AS ub
USING (id)
WHERE item = ' . $id);

如果您的版本不支持“LIMIT&IN/ALL/ANY/SOME子查询”:


如果您的版本不支持“LIMIT&IN/ALL/ANY/SOME子查询”:


再见,谢谢。“此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询',但我想我找到了一个解决方案,不知道(不知道)IN.@cantsay我为早期版本的MySQL添加了一个替代解决方案,谢谢。”。“此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询',但我想我找到了一个解决方案,不知道(不知道)IN.@cantsay我为早期版本的MySQL添加了一个替代解决方案。”