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添加了一个替代解决方案。”