为啥查询无法使用 mysqli 选择特定 id?
Posted
技术标签:
【中文标题】为啥查询无法使用 mysqli 选择特定 id?【英文标题】:why query unable to select specific id using mysqli?为什么查询无法使用 mysqli 选择特定 id? 【发布时间】:2019-02-05 13:02:16 【问题描述】:我在使用 mysqli 表时遇到了一个奇怪的问题。我有一个表,其中有一些记录。我正在执行以下查询
SELECT * FROM `users` WHERE
EXISTS (
SELECT *
FROM `games`
INNER JOIN `users_games`
ON `games`.`id` = `users_games`.`game_id`
WHERE
`users`.`id` = `users_games`.`user_id` AND `game_id` = 10
)
AND `users`.`id` = 10
LIMIT 12;
在users_games
表中,user_id = 10
有 11
行 (1 to 13
)。上述查询适用于所有人
`game_id` = 10 /* it is working */
当我尝试执行game_id= 1
时,它没有显示记录,但是game_id= 1
有一行。
在它下面users_games
桌子
【问题讨论】:
这个问题与 php/mysqli 有关吗?如果是,请添加相关代码。您正在使用game_id= 1
或game_id= 10
?
您只向我们展示了users_games
表,但您的SQL 查询又查询了两个表,users
和games
。请从您的 SQL 查询中删除这些表,或者向我们展示这两个表中的代表性行。另外,请edit您的帖子并将表格行发布为文本,而不是屏幕截图。
SQL 表/结果集根据定义是 无序 .. 在 MySQL 中使用 LIMIT
而不使用 ORDER BY
是无意义,并且可能导致不同的结果即使每次运行相同查询时数据都相同
user_id = 1 没有 game_id = 10 它有 game_id= 1
有人可以指导我为什么会有反对票吗?我尽力解释我面临的问题
【参考方案1】:
鉴于这些用户
select id from users;
+-----+
| id |
+-----+
| 1 |
| 2 |
| 3 |
| 6 |
| 7 |
| 8 |
| 10 |
| 12 |
| 14 |
| 15 |
| 16 |
| 17 |
| 999 |
+-----+
还有这个
drop table if exists games,users_games;
create table games (id int);
create table users_games(user_id int, game_id int);
insert into games values (1),(10);
insert into users_games values(1,1),(1,10),(10,1);
您的查询
SELECT id FROM `users` WHERE
EXISTS (
SELECT *
FROM `games`
INNER JOIN `users_games`
ON `games`.`id` = `users_games`.`game_id`
WHERE
`users`.`id` = `users_games`.`user_id` AND `game_id` = 1
)
AND `users`.`id` = 10;
生产
+----+
| id |
+----+
| 10 |
+----+
1 row in set (0.00 sec)
正如预期的那样。您可以通过在问题中包含示例数据作为文本来改进您的问题(正如我在答案中所做的那样)。
【讨论】:
感谢您的回答,但很难理解我的意思是问题出在哪里,您在哪里解决了? 根据我创建的数据没有问题,因此您的数据不能与我创建的模型相同。 我真的不明白你到底在说什么以上是关于为啥查询无法使用 mysqli 选择特定 id?的主要内容,如果未能解决你的问题,请参考以下文章
查询使用 MYSQLI_USE_RESULT 在特定结果大小后不返回任何内容 [重复]