【发布时间】:2012-02-28 14:21:29
【问题描述】:
我有两个表我想匹配这样的记录
SELECT * FROM records1
WHERE records1.set IN (SELECT records2.p
FROM `records2`
WHERE rcords2.id=1200 )
我只用这个查询来测试它:
SELECT (records2.p)
FROM `records2`
WHERE rcords2.id=1200
它给出的结果
p
========
14, 12, 80
还有这样的records1.set值
set
=============
80, 20, 60
为什么不匹配?
【问题讨论】:
-
试试这个查询:
SELECT r1.* FROM records1 r1 INNER JOIN records2 r2 ON r1.set = r2.p WHERE r2.id = 1200; -
无法正常工作,因为我无法使用 = 来列出带逗号的值
-
等等,我很困惑。您的意思是条目存储在您的数据库中,在实际字段中使用逗号(例如为列
p返回的每一行都有三个逗号分隔值),还是在上面的示例中,您列出了 @987654327 的结果@,你的意思是返回了三行...一个值为 14,一个值为 12,一个值为 80? -
其以逗号存储,例如:14, 15, 18 = 12, 14, 0 - TRUE / 14, 15, 18 = 12, 17, 0 - FALSE
-
这似乎是非常糟糕的数据库设计。您应该避免在数据库中存储逗号分隔的值,特别是如果您只想基于该单元格的部分进行查询。
标签: mysql database phpmyadmin