php - 选择具有多个相同项的位置

标签 php mysql pdo

我有一个名为“matches”的表,其中我通过 id 将表“numbers”中的 items 与表“letters”中的 items 关联起来。

所以看起来像

number_id, letter_id 
1,10 
2,10
3,10
5,11
4,23
7,19 
1,19
3,64

现在用户输入一个数字数组,比如 1,2,3 我必须找到所有数字都是 1,2,3 的字母,即 10。如果他们给出 1,7,则会给出 19,如果他们给出 3,则会给出 64。

我怎样才能做到这一点?

我一直在尝试为此编写一个递归函数,但它总是失败。 有没有某种:

SELECT letter_id WHERE **number_id***s* = 1,2,3. That would be perfect. :)

最佳答案

这可能适用于所有情况,也可能不适用于所有情况,但我尝试使用 (1,2,3) 和 (1,7):

select distinct letter_id
from r r1
    inner join r r2 using (letter_id)
where r1.number_id in (1, 7)
    and r2.number_id in (1,7)
    and (r1.number_id  r2.number_id);

您必须能够使用某种编程语言动态提供 (1,7)(1,2,3)

凌晨 3:30 摇晃婴儿...

编辑:要完成@Martin的答案,您可以使用order by field()

select letter_id 
from (
    select letter_id,
        group_concat(number_id order by field(number_id,2,1,3)) as numset
    from r 
    group by letter_id
    ) as Martin
where numset = '2,1,3';

关于php - 选择具有多个相同项的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301341/

相关文章:

php - 如何增加 Symfony2 中的 session 生命周期?

php - 使用MySQL和PHP显示和分组数据

sql - 作为 A、B 或 B、A 的唯一列对

java.sql.SQLException : Operation not allowed after ResultSet closed MySQL Java

php - 如何复制 mySQL 表行但插入一个自定义值?

php - 如何扩展 Joomla!到我的自定义 PHP 文件

php - 使用 php 直接写入磁盘

mysql - 如何对 MySQL 数据库表执行此查询?

javascript - 检查执行 bool 值或使用 try/catch PDO

PHP MySQL : issue selecting different columns from the same table