我有一个名为 [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/