gpt4 book ai didi

mysql - 从多行中选择数据

转载 作者:行者123 更新时间:2023-11-29 12:39:13 24 4
gpt4 key购买 nike

  1. 例如,test 第 7 列包含两行,如果 number 列包含值 5 AND 6,并且该值不是 Xchr 列中,我想选择 test 列中带有 7 的行。

  2. 例如,如果 number 列包含值 5 AND 6,并且值 X,则 test 第 10 列包含三行存在于 chr 列中,我想排除 test 列中包含 10 的行。

Demo下面的架构和损坏的 SQL 查询可在 SQL fiddle 上找到。

架构:

CREATE TABLE TEST_DATA (ID INT, TEST INT, CHR VARCHAR(1), NUMBER INT);

INSERT INTO TEST_DATA VALUES
( 1 , 7 , 'C' , 5),
( 2 , 7 , 'T' , 6),
( 3 , 8 , 'C' , 4),
( 4 , 8 , 'T' , 5),
( 5 , 9 , 'A' , 4),
( 6 , 9 , 'G' , 5),
( 7 , 10 , 'T' , 4),
( 8 , 10 , 'A' , 5),
( 9 , 10 , 'X' , 6),
(10 , 14 , 'T' , 4),
(11 , 14 , 'G' , 5);

SQL:

SELECT *
FROM test_data t1, test_data t2
WHERE t1.number=5 is not t1.chr=X AND
t2.number=6 is not t2.chr=X;

如果number列包含5和6并且chr列不包含,如何保留test列X

更新 结果应该只是带有 7 的 test 列,因为 test 列 7 在 number 中有 5 和 6 列而不是 X。

更新 2 结果示例:

ID | TEST | CHR  |  NUMBER               
1 | 7 | C | 5
2 | 7 | T | 6

最佳答案

如果我正确理解了要求...

SELECT a.test 
FROM test_data a
LEFT
JOIN test_data b
ON b.test = a.test
AND b.chr = 'x'
WHERE a.number IN (5,6)
AND b.id IS NULL
GROUP
BY a.test
HAVING COUNT(*) = 2;

http://www.sqlfiddle.com/#!2/1939f/4

您可以将此结果连接回 test_data,以获取 test 等于 7 的所有结果

关于mysql - 从多行中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354648/

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