我可以在SQL中执行并行字段吗?

Dav*_*oby 2 mysql sql

我在MySQL数据库中有一堆X. 有些X不会在一起,我想要一个包含所有X对的表和一个表示它们是否正常的布尔值.

这部分很简单:

CREATE TABLE good_x (
    X_id_1 int(10) not null ,
    X_id_2 int(10) not null ,
    is_good tinyint(1) 
    ) ;
Run Code Online (Sandbox Code Playgroud)

我的问题是:鉴于Xsub1和Xsub3在一起.

SELECT is_good from good_x where X_id_1 = "Xsub1" and X_id_2 = "Xsub3" ;
Run Code Online (Sandbox Code Playgroud)

但是,如果数据来自Xsub3,Xsub1怎么办?我可以在表格中有两个条目:

Xsub1,Xsub3,1
Xsub3,Xsub1,1
Run Code Online (Sandbox Code Playgroud)

但是,你必须跟踪两件事.在我的情况下,这是一个受控制的词汇表,所以我不期望有太大的变化.但是如果我想添加第三个X,Xsub5,那么你就会得到六个条目.

Xsub1,Xsub3,Xsub5,1
Xsub1,Xsub5,Xsub3,1
Xsub3,Xsub1,Xsub5,1
Xsub3,Xsub5,Xsub1,1
Xsub5,Xsub1,Xsub3,1
Xsub5,Xsub3,Xsub1,1
Run Code Online (Sandbox Code Playgroud)

这很难维护.

有没有办法可以投入一堆X,两个或更多,并将其与布尔值相关联,所以我不必为双打,三元组,四元组,四元组等单独的表.这是否可以在任何SQL,如果是这样,语法是什么?

BD.*_*BD. 6

将每个有效分组存储在如下表中:

CREATE TABLE good_x (x_id CHAR, group_id INT);
Run Code Online (Sandbox Code Playgroud)

用这样的分组播种它:

INSERT INTO good_x(x_id,group_id) values ('Xsub3',1);
INSERT INTO good_x(x_id,group_id) values ('Xsub1',1);
Run Code Online (Sandbox Code Playgroud)

对于3:

INSERT INTO good_x(x_id,group_id) values ('Xsub3',2);
INSERT INTO good_x(x_id,group_id) values ('Xsub1',2);
INSERT INTO good_x(x_id,group_id) values ('Xsub5',2);
Run Code Online (Sandbox Code Playgroud)

现在像这样运行SELECT:

SELECT 1
FROM   good_x
WHERE  x_id IN ([your list of values])
GROUP BY group_id
HAVING count(1) = n;
Run Code Online (Sandbox Code Playgroud)