如果我想从表“messages”中获取结果,但排除具有“messages_view”中值的行(其中字段 messages.message=messages_view.id AND messages.deleted=1 AND messages_view),我必须使用什么 SQL 查询。用户=$somephp变量
用更外行的话来说,我有一个消息表,其中每个message由“id”以及消息视图与“消息”字段连接的表。我想获取行message未被删除的(来自消息视图)对于特定的“用户”。 'deleted'=1 表示消息被删除。
这是我当前的 SQL 查询,它只是获取以下值:
SELECT * FROM messages WHERE ((m_to=$user_id)
OR (m_to=0 AND (m_to_state='' OR m_to_state='$state')
AND (m_to_city='' OR m_to_city='$city')))
这是我的表格的布局:
table: messages
----------------------------
id (INT) (auto increment)
m_from (INT) <-- Represents a user id (0 = site admin)
m_to (INT) <-- Represents a user id (0 = all users)
m_to_state (VARCHAR)
m_to_city (VARCHAR)
table: messages_view
----------------------------
message (INT) <-- Corresponds to messages.id above
user (INT) <-- Represents a user id
deleted (INT) <-- 1 = deleted
我真的认为这很简单:
SELECT * FROM messages WHERE ((m_to=$user_id)
OR (m_to=0 AND (m_to_state='' OR m_to_state='$state')
AND (m_to_city='' OR m_to_city='$city')))
AND NOT EXISTS (
SELECT *
FROM messages_view
WHERE messages.message = messages_view.id
AND messages.deleted = 1
AND messages_view.user = $somephpvariable
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)