mysql - 如何选择其他查询中不存在的数据

标签 mysql sql

我正在尝试从表数据中进行选择,但我希望结果不存在于此选择中。

(SELECT * FROM data WHERE category = 'A' ORDER BY RAND() LIMIT 4)
UNION ALL
(SELECT * FROM data WHERE category = 'B' ORDER BY RAND() LIMIT 4)` 

所以没有行被双选。
摆弄sample data .

最佳答案

不存在:

SELECT * FROM table1 t1
WHERE NOT EXISTS (
  SELECT 1 FROM (
    (SELECT * FROM table1 WHERE category = 'A' ORDER BY RAND() LIMIT 4)
    UNION ALL
    (SELECT * FROM table1 WHERE category = 'B' ORDER BY RAND() LIMIT 4)
  ) t 
  WHERE t.id = t1.id AND t.category = t1.category  
)

参见 demo .

关于mysql - 如何选择其他查询中不存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660866/

相关文章:

mysql - 无法创建/写入文件 '/path/file.csv'(错误代码 : 13 "Permission denied")

mysql - NLP和英语词典数据库?

php - 在 Laravel 中搜索两个数字(价格)

SQL Server 2008表变量错误: Must declare the scalar variable "@RESULT"

sql - 有关 SQL 查询的帮助

mysql - SQL - 从具有公共(public)字段的组中获取不同的记录

mysql - mysqltuner 的 "MySQL' s maximum memory usage is dangerously high”是什么意思?

mysql - 由于内存泄漏,Grails 应用程序无法部署到 cloudfoundry

mysql - 连接3个表的Mysql查询是什么?

java - 为什么我们在 JDBC 中使用事务?