MySQL加入使用“包含”?

时间:2011-02-09 08:59:48

标签: mysql join

我有这两个表:

Table: ORDERS
ID - NAME    - DATA
---------------------------------------------
1  - Order 1 - node_checkout_nid";i:141;s:10:
2  - Order 2 - node_checkout_nid";i:142;s:10:

Table: NODES
NID - Description
--------------------
141 - bla bla bla
142 - bla bla bla 2

我需要一个可以在NID上连接两个表的SQL连接查询,请记住NID在“DATA”列中。

我需要以此结束:

Table: RESULT
ID - NAME    - DATA                             NID - Description
-----------------------------------------------------------------------------------
1  - Order 1 - node_checkout_nid";i:141;s:10: - 141 - bla bla bla
2  - Order 2 - node_checkout_nid";i:142;s:10: - 142 - bla bla bla 2

我想使用“喜欢”加入,但我认为(如果可能的话)“包含”加入会更好吗?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:6)

您可以使用:

SELECT ID, NAME, DATA, NID, Description
  FROM ORDERS INNER JOIN NODES ON DATA LIKE CONCAT('%;i:', NID, ';%')

无论如何,这是一个沉重的查询。将NID作为纯文本放在数据字段中并不是一个好主意,在不同的列中更好。

答案 1 :(得分:2)

您的数据是非规范化的。您正在DATA列中存储一些序列化对象,并且正在尝试基于此执行关系操作。虽然有可能这样做,但请注意它会很慢并且可能不可靠。只需将您的NID存储在单独的列中即可。