gpt4 book ai didi

mysql - 当 2 个不同的行满足我的要求时返回共享列值

转载 作者:行者123 更新时间:2023-11-30 21:54:01 25 4
gpt4 key购买 nike

很难在搜索中传达这个问题以找到我需要的东西。看起来这应该很简单,但我还没有受过良好的 SQL 教育。我有 3 个表,我将它们连接在一起以将所有参数与作业 ID 链接起来。由此,如果找到符合以下条件的 2 个参数,我想返回 Job.ID。

下面是表格的示例,下面是标准:

Table1: Job  
Id | Name | ContextId
1 | Test1 | 1111
2 | Test2 | 2222
3 | Test3 | 3333

Table2: Job2Param
ContextId | ParamId
1111 | 120
1111 | 140
1111 | 160
2222 | 220
2222 | 240
3333 | 300

Table3: Param
ParamId | Name | Value
120 | User | Brian@gmail.com
140 | Pwd | P@ssword
160 | Var | Null
220 | User | Peter@gmail.com
240 | PW | passw0rd123
300 | non | eek

***MASTER TABLE: ALL JOINED ***
Id | Name | ContextId | ParamId | Name | Value
1 | Test1 | 1111 | 120 | User | Brian@gmail.com
1 | Test1 | 1111 | 140 | Pwd | P@ssword
1 | Test1 | 1111 | 160 | Var | Null
2 | Test2 | 2222 | 220 | User | Peter@gmail.com
2 | Test2 | 2222 | 240 | PW | passw0rd123
3 | Test3 | 3333 | 300 | non | eek

我想要完成的是...对于每个不同的 J.Id:

  • 如果有任何 P.Value 像 '%@gmail.com'
  • 和 ('Password','Pwd','PW') 中的任何其他 P.Name

所以我想要的结果是作业 ID # 1 和 2,因为它们都有一个包含 @gmail.com 的参数值,并且都有一个不同的参数名称,其中包含类似于密码的内容。

我该怎么做?

最佳答案

SELECT DISTINCT C.ID

FROM (SELECT B.CONTEXTID
FROM PARAM A
, JOB2PARAM B
WHERE A.NAME IN ('Password', 'Pwd', 'PW')
AND B.PARAMID = A.PARAMID
) A

, (SELECT B.CONTEXTID
FROM PARAM A
, JOB2PARAM B
WHERE A.VALUE LIKE '%@gmail.com'
AND B.PARAMID = A.PARAMID
) B

, JOB C

WHERE B.CONTEXTID = A.CONTEXTID
AND C.CONTEXTID = B.CONTEXTID
;

关于mysql - 当 2 个不同的行满足我的要求时返回共享列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008862/

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