作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从表中排除一些记录,并显示它们,然后,我需要显示其他被排除的记录。
我有 3 个表:
+----Songs----+ +----Tags----+ +----s_in_tag----+
| id | | id | | id |
| title | | name | | song_id |
+-------------+ +------------+ | tag_id |
+----------------+
在表 Songs 中,我存储了一个歌曲列表,表 Tags 有一个标签列表,表 s_in_tag 绑定(bind)了这两个表。
假设我在歌曲中有:1,歌曲nr1。在标签中:1、POP; 2、说唱; 3、古典。在 s_in_tag 中:1、3、2。这意味着 song nr1 有标签 Classical
我希望能够在我的仪表板中添加/删除标签,但我如何进行正确的查询以获取所有歌曲标签,并将它们显示为选中的复选框,然后显示表中的其他标签 标记为未选中的复选框?
到目前为止我已经知道了:
SELECT * FROM tags
JOIN s_in_tag
ON tags.id = s_in_tag.tag_id
WHERE s_in_tag.song_id = *song id*
AND s_in_tag.tag_id NOT IN (SELECT tags.id FROM tags) GROUP BY tags.id
我只是尝试我在网上找到的东西,希望有人能帮助我。
最佳答案
为什么不将它们都包含在同一个查询中?
SELECT t.id, t.name, st.id IS NOT NULL AS is_checked
FROM Tags t
LEFT JOIN s_in_tag st ON t.id = st.tag_id AND st.song_id = [song_id];
关于php - 我如何根据另一个查询从 mysql 查询中排除一些记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077419/
我是一名优秀的程序员,十分优秀!