0

大家好。

例如,我有两张桌子;

表名称 X

________________
| id |    A    | 
|____|_________|
| 1  | 1,2,4,8 |
|____|_________|

此查询正在另一个表 Y 中工作,

    mysql_query(" Select * from Y where id IN(1,2,4,8) ")

但这不起作用,

    mysql_query(" Select * from Y where id IN(Select A from X where id=1) ")

我能做些什么?谢谢你。

4

2 回答 2

1

更好的表格设计是:

table X:
--------
id int
someid int

表中的值为:

id  someid
--  --------
1   1
2   1
4   1
8   1

您的查询可能是mysql_query(" Select * from Y where id IN(Select id from X where someid=1").

回答你的问题——你似乎是从 PHP 或类似的东西查询。使用您拥有的表结构,您可以使用从表 X 中检索值mysql_query("Select A from X where id=1")并将结果存储在变量中。然后,您可以执行第二个查询,mysql_query(" Select * from Y where id IN(" + yourVar + ") ").

于 2012-10-04T23:12:55.620 回答
0

这是一个“有很多”关系,所以你应该有一个中间连接表。这种结构的好处在于插入和删除。在您要从 A 追加或删除的结构中,您需要拉出记录,更改值并将其写回(或者可能编写一个过程)。

    X       
_________
|  id   |
|_______|
|  1    | 
|_______|               

    Y
_________
|  id   |
|_______|
|  1    | 
|_______|   
|  2    | 
|_______|   
|  3    | 
|_______|   

    X_Y
____________________________
|  id   |  x_id  |    y_id |
|_______|________|_________|
|  1    |   1    |    1    |
|_______|________|_________|  
|  2    |   1    |    2    |
|_______|________|_________|
|  3    |   1    |    3    |
|_______|________|_________|


SELECT * FROM Y INNER JOIN X_Y ON Y.id=X_Y.y_id WHERE X_Y.x_id=1

or

SELECT * FROM Y WHERE id IN (SELECT y_id FROM X_Y WHERE x_id=1)
于 2012-10-04T23:22:11.053 回答