我正在尝试选择 Rails Controller 中的所有重复属性。我想按街道比较每个属性的地址并将结果返回给我以显示在页面上。
我尝试过的:
@conflicts = Property.where("SELECT street, COUNT(street) FROM properties GROUP BY street HAVING COUNT(street) >1")
这是我收到的错误:
Mysql2::Error: Operand should contain 1 column(s): SELECT `properties`.* FROM `properties` WHERE (SELECT street, COUNT(street) FROM properties GROUP BY street HAVING COUNT(street) >1)
我知道有人提出了许多与我的问题类似的问题,但我需要返回整个属性数组及其所有信息,而不仅仅是街道,也不仅仅是重复项的数量。谢谢!
更新:还尝试过:
@conflicts = Property.where("SELECT street FROM properties GROUP BY street HAVING count(street) > 1")
这给了我:
Mysql2::Error: Subquery returns more than 1 row: SELECT `properties`.* FROM `properties` WHERE (SELECT street FROM properties GROUP BY street HAVING count(street) > 1)
我想要的是一张有这样的 table
property_id | street | state | zip
1 | 123 test drive | Arkansas | 12345
2 | 123 test drive | Iowa | 45632
3 | 999 not avenue | Delaware | 55556
它返回属性 1 和 2。
最佳答案
我不知道 RoR 查询生成器语法,但您想要的原始查询是:
SELECT street, COUNT(*)
FROM properties
GROUP BY street
HAVING COUNT(*) > 1
关于Mysql2::错误:操作数应包含 1 列:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51484567/