php - MySql 自引用查询

标签 php mysql

我有一个名为 [clients] 的下表,其中的列和值如下:

+--------+-----------+--------------+----------------+
| uid    | client_id | client_input |  input_value   |
+--------+-----------+--------------+----------------+
| 1      |   22      |  City        |  Seattle       |
+--------+-----------+--------------+----------------+
| 2      |   45      |  City        |  Ojai          |
+--------+-----------+--------------+----------------+
| 3      |   22      |  State       |  OR            |
+--------+-----------+--------------+----------------+
| 4      |   45      |  State       |  CA            |
+--------+-----------+--------------+----------------+
| 5      |   65      |  City        |  Orlando       |
+--------+-----------+--------------+----------------+
| 6      |   74      |  State       |  AB            |
+--------+-----------+--------------+----------------+
| 7      |   65      |  State       |  FL            |
+--------+-----------+--------------+----------------+
| 8      |   12      |  City        |  Los Angeles   |
+--------+-----------+--------------+----------------+
| 9      |   12      |  State       |  CA            |

我需要 PHP/MySql 查询,它会列出 input_value 列中位于“CA”状态的所有城市 '.显然,公共(public)标识符是始终匹配的 client_id,因为如果客户端位于 'Los Angeles',则相同的 client_id 也在包含 值的行中>'CA'input_value 列中。该表有超过 800 万行,我们非常感谢任何快速执行的查询。

我脑子炸了,截止日期临近,无法更改表格设计,需要帮助!

最佳答案

SELECT *
FROM table AS t1 INNER JOIN table AS t2 ON t1.client_id = t2.client_id
WHERE t1.client_input = 'City' AND t2.client_input = 'State' AND t2.input_value = 'CA'

注意:这可能需要一些调整并且可能会被优化。但它应该能让你开始并让你的大脑冷静下来。

关于php - MySql 自引用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002565/

相关文章:

mysql 查询不起作用

mysql - 如何为每个 GROUP BY 集返回多个结果?

MySQL 从 JSON 对象数组中选择字段

php - pecl 安装 xdebug 版本错误

JavaScript - 如何从函数传递/存储值以形成隐藏字段?

javascript - Markdown - PHP 解析器

Ubuntu 上的 MySQL/var/lib/mysql/table - 它是什么?

php - PHP 循环数组逻辑错误

php - 如果两个表中都不存在记录,则从数据库返回记录? PDO

php - mysql_query 的结果在第一次使用后被删除?