我有两个领域,email和addlEmail.如果给定的电子邮件地址不在任何一个字段中,我需要一个仅选择记录的选择.
在尝试使用没有与两列(回报:Cardinality violation: 1241 Operand should contain 2 column(s):)
SELECT WebUsername,
WebPassword,
Active,
Email,
AddlEmail,
ShowYear
FROM Exhibitors e
WHERE e.Active = '-1'
AND e.ShowYear = 2013
AND (e.Email, e.AddlEmail) NOT IN ('test@test.com', 'test2@test.com')"
Run Code Online (Sandbox Code Playgroud)
我尝试过AND和OR,它们因为明显的原因而无法工作.
为了试图彻底:
$emails = "'email@email.com', 'email2@email.com'";
// example table data for 2 fields in question
Row | Email | AddlEmail
1 | email@email.com | email3@email.com
2 | email4@email.com | email2@email.com
3 | email5@email.com | null
4 | email6@email.com | email7@email.com
Run Code Online (Sandbox Code Playgroud)
该查询应仅返回第3行和第4行.
感谢您查看,如果您需要进一步说明,请与我们联系.
克里斯
编辑:回复发布的答案样本表:
CREATE TABLE `doubleSelect` (
`Email` varchar(255) DEFAULT NULL,
`AddlEmail` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `doubleSelect` (`Email`, `AddlEmail`) VALUES
('email@email.com', 'email2@email.com'),
('email2@email.com', 'email3@email.com'),
('email4@email.com', 'email5@email.com'),
('email6@email.com', 'email@email.com'),
(NULL, 'email@email.com'),
('email2@email.com', NULL);
Run Code Online (Sandbox Code Playgroud)
示例查询(不返回最后一行,它应该):
SELECT *
FROM `doubleSelect`
WHERE Email NOT
IN (
'email@email.com'
)
AND AddlEmail NOT
IN (
'email@email.com'
)
Run Code Online (Sandbox Code Playgroud)
只是
AND e.Email NOT IN ('test@test.com', 'test2@test.com')
AND e.AddlEmail NOT IN ('test@test.com', 'test2@test.com')
Run Code Online (Sandbox Code Playgroud)
包括NULL值:
SELECT *
FROM `doubleSelect`
WHERE (Email IS NULL or Email NOT IN ('email@email.com'))
AND (AddlEmail IS NULL or AddlEmail NOT IN ('email@email.com'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |