English 中文(简体)
如何写回非学校记录的问题
原标题:How to write a query returning non-chosen records
  • 时间:2009-10-24 04:31:07
  •  标签:

我写了心理测试申请,在申请中,用户的言辞清单,而且他/她必须选择10个字,其中非常之多>自我描述,然后选择部分描述自己的话,以及不描述自己的话。 申请本身效果很好,但我有兴趣探讨元数据的可能性:在第一类中,最经常选择哪一种词,在第一类中从未选择过哪一种字。 第一个问题是个问题,但第二个问题(从未选择过字)使我 st。

表结构如下:

table words: id, name
table choices: pid (person id), wid (word id), class (value between 1-6)

通常,答案涉及在言论和选择之间留有一席之地,但必须作出修改声明——在选择时。 第1类——这给我造成了问题。 撰写像

select words.name
from words left join choices
on words.id = choices.wid
where choices.class = 1
and choices.pid = null

造成数据库管理员长时间前往其他地方。 我正在使用Delphi 7和Pe鸟类1.5。

TIA, No am

最佳回答

或许更快:

SELECT w.name
FROM words w
WHERE NOT EXISTS
   (SELECT 1
    FROM choices c 
    WHERE c.class = 1 and c.wid = w.id)
问题回答

这样做应该做到:

SELECT name
FROM words
WHERE id NOT IN
   (SELECT DISTINCT wid   -- DISTINCT is actually redundant
    FROM choices 
    WHERE class == 1)
SELECT words.name
FROM
    words
    LEFT JOIN choices ON words.id = choices.wid AND choices.class = 1
WHERE choices.pid IS NULL

保证有<代码>(级、轮)的索引。





相关问题