我有两张表property_description
和property_extras
。
表property_description
看起来像
id location price etc etc
1 New York 3000 v v
表property_extras
看起来像
property_id extras
1 12,14,16,167
那么问题是,只有当至少有一个额外的匹配时,mysql如何查询它才能返回结果?
答案 0 :(得分:2)
尽管可以使用架构,但解决问题的正确方法是 normalize your database
答案 1 :(得分:1)
理想情况下,您应该将附加内容标准化为
property_id extra_id
1 12
1 14
...
如果你不能将你的数据库结构转换成这样的东西,那么你必须做一些事情(可怕的),如:
SELECT property_id FROM property_extras WHERE
extras LIKE '12,%' OR extras LIKE '%,12,%' OR extras LIKE '%,12'
或者,如果您可以像逗号一样指出,12,14,...,
那样在开头和结尾插入逗号,只需:
SELECT property_id FROM property_extras WHERE extras LIKE '%,12,%'
答案 2 :(得分:0)
你可以在行的开头和结尾用extras
填充每个,
行吗(例如,12,14,16,167,
)吗?
然后这将完美地运作
SELECT FROM `property_description` LEFT JOIN `property_extras` WHERE `property_extras`.`extras` REGEXP ',(13|14|166),'
或
SELECT FROM `property_description` LEFT JOIN `property_extras` WHERE `property_extras`.`extras` REGEXP ',14,'