作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这是一个不好的问题,我很抱歉。我是 SQL 新手,自己无法找到答案。
我有两张 table 。第一个表包含一个 id 和唯一的单词。第二个表包含一个 id、property_name 和 property_value,并且每个单词可以有多个属性。
字
+----+------+
| id | word |
+----+------+
| 1 | dog |
| 2 | tree |
| 3 | dang |
| 4 | frog |
+----+------+
+----+---------------+----------------+
| id | property_name | property_value |
+----+---------------+----------------+
| 1 | letters | 3 |
| 1 | first_letter | d |
| 2 | letters | 4 |
| 2 | first_letter | t |
| 3 | letters | 4 |
| 3 | first_letter | d |
| 4 | letters | 4 |
| 4 | first_letter | f |
+----+---------------+----------------+
SELECT word
WHERE
1) (property_name = 'letters' and property_value = '3')
2) (property_name = 'first_letter' and property_value = 'd')
SELECT w.word
FROM word w
LEFT JOIN property p ON (w.id = p.id)
WHERE ((p.property_name = 'letters' and p.property_value = '3') and
(p.property_name = 'first_letter' and p.property_value = 'd'))
GROUP BY w.word
SELECT w.word
FROM word w
LEFT JOIN property p ON (w.id = p.id)
WHERE (p.property_name = 'letters' and p.property_value = '3')
LEFT JOIN property p ON (w.id = p.id)
WHERE (p.property_name = 'first_letter' and p.property_value = 'd')
GROUP BY w.word
dog
最佳答案
通过使用 INTERSECT,您可以编写一个高效、直观且实际上与您最初编写的非常相似的查询:
SELECT word FROM words
WHERE id IN (
SELECT id FROM properties WHERE property_name = 'letters' AND property_value = '3'
INTERSECT
SELECT id FROM properties WHERE property_name = 'first_letter' AND property_value = 'd'
);
关于sql - 如何从一个表中选择一个值,其中在另一个表中满足两个单独的条件对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58533390/
我是一名优秀的程序员,十分优秀!