我正在尝试从我的表中获取随机 id 值。条件是相同id不同语言的选择值不能存在(语言为lang
字段)
我这样做:
SELECT id_v as p,cont FROM value_phrase WHERE lang=1 AND
NULL IN (SELECT cont FROM value_phrase WHERE id_v=p AND lang=2)
ORDER BY RAND() LIMIT 0,1
...但我没有得到任何结果(这一定是我的查询中有错误,因为有很多行满足所需的条件。)我应该如何解决它?
- 解决了 -
解决方案是使用 NOT EXISTS 而不是 NULL IN,并使用表别名将第一个 id_v 引用到子查询中。这样(感谢 Mark Byers):
SELECT first.id_v, first.cont
FROM value_phrase AS
FIRST WHERE lang =1
AND NOT
EXISTS (
SELECT cont
FROM value_phrase
WHERE id_v = first.id_v
AND lang =2
)
ORDER BY RAND( )
LIMIT 0 , 1