php - 查询6个不同列的6个数字的所有组合sql

标签 php mysql sql

我有一个包含 6 列的数据库,n1 - n6。每行都有一个数字,因此每行有 6 个不同的数字。当我查询时,我会根据数据库中的每一行检查必须提交的 6 个数字。我需要查询来更改组合,因此理论上已完成 36 个查询。

因此示例数据集可能是

N1  N2  N3  N4  N5  N6
1   12  54  36  17  23

我必须查询的数字是

1 54 36 17 23 12

所以它们是相同的,但因为它们的顺序不同,所以不会返回结果。所有 6 个必须匹配才能返回正数。

示例查询:

$sql = "SELECT * FROM numbers WHERE n1 = :n1 AND n2 = :n2 AND n3 = :n3 AND n4 = :n4 AND n5 = :n5 AND n6 = :n6";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":n1", $n1);
$stmt->bindParam(":n2", $n2);
$stmt->bindParam(":n3", $n3);
$stmt->bindParam(":n4", $n4);
$stmt->bindParam(":n5", $n5);
$stmt->bindParam(":n6", $n6);
$stmt->execute();

我可以使用 36 个不同的查询来完成此操作,但如果能够在一个查询中完成此操作会更有用。

最佳答案

嗯。 。 。连续存储六个数字听起来像是一种糟糕的数据格式。如果这些是行而不是列,那就更容易了。

但是,假设没有重复项,您可以执行以下操作:

SELECT *
FROM numbers
WHERE n1 IN (:n1, :n2, :n3, :n4, :n5, :n6) AND
      n2 IN (:n1, :n2, :n3, :n4, :n5, :n6) AND
      n3 IN (:n1, :n2, :n3, :n4, :n5, :n6) AND
      n4 IN (:n1, :n2, :n3, :n4, :n5, :n6) AND
      n5 IN (:n1, :n2, :n3, :n4, :n5, :n6) AND
      n6 IN (:n1, :n2, :n3, :n4, :n5, :n6);

关于php - 查询6个不同列的6个数字的所有组合sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38946261/

相关文章:

php - mysql选择两个表并使用 "or"变得非常慢

java - 我想我用错了 JDBC

c# - MySQL 数据库 : Limit user access to data they created

mysql - 计算地址中的人数 SQL

mysql - 如果第二个表满足要求,则从多个表中选择数据

sql - SQL表插入小数时溢出错误

php - 关于phpredis,我一直很困惑如何为我的PHP环境选择合适的分支

php - 如何将echo语句从函数调用分配给变量?

php - HTML5 Websocket 向服务器发送同步数据

java - 安卓 SQLite : Check if row exists in table