在MySQL中,是否可以从列中选择两个值(限制为2),不包括某些值?我们有一个包含库存的数据库,我想在他们有机器更新时向用户发送电子邮件。但是,在同一个库存系统中,我们有“nobody”(大约10个)和“mainconf”(其中一个)用户,这些用户不是真正的用户,也不会收到电子邮件。
所以基本上我想拉2个值(按日期排序,我知道怎么做),这些值排除某些值(即“nobody”)被拉出。
我的查询也是如此:
SELECT user from data ORDER by checkup_date WHERE data.name != "nobody" AND WHERE data.name != "mainconf" AND WHERE data.name != "testing" ASC limit 2
答案 0 :(得分:2)
这样的事情:
SELECT value1, value2 FROM tablename
WHERE tablename.name != "nobody"
AND tablename.name != "mainconf" LIMIT 2;
答案 1 :(得分:1)
您的查询已关闭但不重复WHERE并将ORDER放在WHERE之后:
SELECT user from data WHERE name <> "nobody" AND name <> "mainconf" AND name <> "testing" ORDER by checkup_date ASC limit 2
或者:
SELECT user from data WHERE name not in ("nobody" ,"mainconf", "testing") ORDER by checkup_date ASC limit 2
答案 2 :(得分:0)
您可以尝试这样的事情:
SELECT B.* FROM
(SELECT X.id
FROM
(SELECT id FROM inventory
WHERE username IN ('nobody','mainconf')
ORDER BY date DESC LIMIT 2) X
LEFT JOIN
(SELECT id FROM inventory
WHERE username IN ('nobody','mainconf')) Y
USING (id) WHERE Y.id IS NULL
) A
INNER JOIN inventory B USING (id);
您必须确保库存表具有支持子查询的正确索引:
ALTER TABLE inventory ADD INDEX date_id_ndx (date,id);
ALTER TABLE inventory ADD INDEX username_id_ndx (username,id);
ALTER TABLE inventory ADD INDEX username_date_id_ndx (username,date,id);
LEFT JOIN是按日期排序的所有按键LIMIT 2,针对所有按键排除。
试一试!!!
答案 3 :(得分:0)
我想提出一个更好的答案
SELECT user FROM data
WHERE name NOT IN('mainconf','testing') LIMIT 2
这将返回名称不是 mainconf
或 testing
的所有估价师
适用于高于 5.6 的 MySQL 版本