[英]MYSQL - Select selecting rows where another column equals something
我有這個問題:
select feature_requests.*,
from feature_requests
where feature_requests.status in ('open','closed','indevelopment')
我還有另一種身份 - 否認。
我還需要選擇狀態為拒絕的所有行,但我的功能請求表上的另一列必須等於某些內容。
所以這樣做:
select feature_requests.*,
from feature_requests
where feature_requests.status in ('open','closed','indevelopment','denied') and
if status = denied, instance_id = ?
不確定正確的語法。 謝謝你的幫助 :)
WHERE子句是放置這些條件的正確位置,但有一些區別:
SELECT `fr`.*
FROM `feature_requests` fr
WHERE (`fr`.`status` IN ('open','closed','indevelopment')) OR
((`fr`.`status` = 'denied') AND (`fr`.`instance_id` = ?))
PS - 注意我正在使用名為fr
feature_requests
的別名,而不是feature_requests
寫入整個名稱。 而且你根本不需要寫它的名字,因為你在查詢中只使用了一個表,但我仍然會使用它,因為它減少了將來出錯的可能性。
進一步閱讀 - SELECT語法
這應該工作:
SELECT
feature_requests.*
FROM
feature_requests
WHERE
feature_requests.status IN ('open','closed','indevelopment') OR (
feature_requests.status='denied' AND
instance_id=?
)
如果它是您正在使用的唯一表,如下所示,也可以在不重復列出表名的情況下編寫:
SELECT
*
FROM
feature_requests
WHERE
status IN ('open','closed','indevelopment') OR (
status='denied' AND
instance_id=?
)
在where子句中使用AND
和/或OR
時,請記住使用括號(
)
來顯示您的實際含義,即使您知道AND
和OR
之間的優先級。 有關使用MySQl的運算符優先級的更多信息示例:
color=blue AND shape=circle OR type=ball
手段
(color=blue AND shape=cirlce) OR type=ball
但很容易被誤解為
color=blue AND (shape=circle OR type=ball)
從生銹的記憶中,你可能想要這樣的東西
SELECT feature_requests.* FROM feature_requests
WHERE feature_requests.status IN ('open', 'closed', 'indevelopment') OR
(feature_requests.status='denied' AND instance_id = ???)
你現在擁有的非常接近。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.