我有这两个表:
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
我想使用“喜欢”加入,但我认为(如果可能的话)“包含”加入会更好吗?任何帮助将不胜感激!
答案 0 :(得分:6)
您可以使用:
SELECT ID, NAME, DATA, NID, Description
FROM ORDERS INNER JOIN NODES ON DATA LIKE CONCAT('%;i:', NID, ';%')
无论如何,这是一个沉重的查询。将NID作为纯文本放在数据字段中并不是一个好主意,在不同的列中更好。
答案 1 :(得分:2)
您的数据是非规范化的。您正在DATA
列中存储一些序列化对象,并且正在尝试基于此执行关系操作。虽然有可能这样做,但请注意它会很慢并且可能不可靠。只需将您的NID存储在单独的列中即可。