gpt4 book ai didi

MYSQL:从表中选择匹配组合和相反组合的所有行

转载 作者:行者123 更新时间:2023-11-29 05:54:26 26 4
gpt4 key购买 nike

我的 table 是这样的

ID - col1 - col2
=====================
1 - 115 - 3
2 - 3 - 115
3 - 110 - 121
4 - 12 - 115
5 - 115 - 121
6 - 115 - 65

我想选择所有行 WHERE col1 = 115这将输出一个简单的表格,其中所有行都匹配 115所以我做了

SELECT * from myTable WHERE col1= 115

这是最简单的部分。现在,与此同时,我需要以某种方式标记所有匹配相反值的行在这种情况下`

3 and 115, given also 115 and 3 exists

不是说我不会“标记”12 | 115因为115|12不存在

期望的输出应该是

ID - col1 - col2 - mark
========================
1 - 115 - 3 - true
5 - 115 - 121 - false
6 - 115 - 65 - false

我希望我说清楚了...`

最佳答案

您需要将表连接到自身,称为“自连接”。该查询返回表的第一个实例中的所有数据,但仅连接与第一个实例相反的第二个实例中的记录。因此,如果存在反向匹配,则所有连接列中都会有数据,而如果没有反向匹配,ID、col1 和 col2 将在连接列上返回空数据。然后,使用“if”语句在连接的数据上查找空值)。见下面的代码:

SELECT
nt1.ID,
nt1.col1,
nt1.col2,
if(ID.col1 IS NULL, 'False', 'True') AS `Mark`
FROM
new_test AS nt1
LEFT OUTER JOIN
new_test AS nt2
ON
(
nt1.col1 = nt2.col2
AND
nt1.col2 = nt2.col1
)
WHERE
nt1.col1 = 115;

请注意,我们在连接中将 col1 与 col2 进行匹配,这会为您提供反向数字。

我用来设置测试的代码:

DROP TABLE IF EXISTS new_test;
CREATE TABLE IF NOT EXISTS new_test (
id int not null,
col1 int,
col2 int
);


INSERT INTO new_test (ID, col1, col2)
VALUES
(1,115,3),
(2,3,115),
(3,110,121),
(4,12,115),
(5,115,121),
(6,115,65);

关于MYSQL:从表中选择匹配组合和相反组合的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com